我在SQL中有一个问题,我正在尝试解决。我知道答案很简单,但我就是答不对。我有两张桌子,一张是顾客,另一张是订单。这两个表是使用customer_id连接的。问题是列出所有没有下订单的客户!这个问题是在地理信息系统桌面软件中运行的,因此并不是所有的MapInfo命令都适用于该程序。换句话说,如果我得到的不仅仅是解决这个问题的方法,我将心存感激。
这是我一直在想的:
SELECT customer_id
from customers
WHERE order_id not in (select order_id from order)
and customer.customer_id = order.customer_id发布于 2013-06-23 22:12:23
这样如何:
SELECT * from customers
WHERE customer_id not in (select customer_id from order)逻辑是,如果我们没有customer_id in order,这意味着客户从未下过订单。正如您已经提到的,customer_id是公用键,因此上面的查询应该获取所需的结果。
发布于 2013-06-23 22:12:24
SELECT c.customer_id
FROM customers c
LEFT JOIN orders o ON (o.customer_id = c.customer_id)
WHERE o.order_id IS NULL发布于 2013-06-23 22:16:51
..。NOT EXISITS方式:
SELECT * FROM customers
WHERE NOT EXISTS (
SELECT * FROM orders
WHERE orders.customer_id = customer.customer_id
)https://stackoverflow.com/questions/17261547
复制相似问题