Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 退回没有销售的客户_Sql_Sql Server - Fatal编程技术网

Sql 退回没有销售的客户

Sql 退回没有销售的客户,sql,sql-server,Sql,Sql Server,我是SQL的初学者,如果这看起来很琐碎/基本,我深表歉意。我正努力让我的头绕过它 我试图生成的结果显示customer表中所有从未下过订单的客户,因此在invoice表中没有条目 换句话说,我想从客户表中选择所有客户,其中发票表中没有客户编号条目 非常感谢,, Mike如果要返回所有客户行,则需要使用左联接 看 如果您需要学习连接语法的帮助,那么这里有一个很好的方法 左联接将返回customer表中的所有行,即使invoices表中没有匹配的行。如果只想返回两个表中匹配的行,那么可以使用内部联接

我是SQL的初学者,如果这看起来很琐碎/基本,我深表歉意。我正努力让我的头绕过它

我试图生成的结果显示customer表中所有从未下过订单的客户,因此在invoice表中没有条目

换句话说,我想从客户表中选择所有客户,其中发票表中没有客户编号条目

非常感谢,,
Mike

如果要返回所有客户行,则需要使用左联接

如果您需要学习连接语法的帮助,那么这里有一个很好的方法


左联接将返回customer表中的所有行,即使invoices表中没有匹配的行。如果只想返回两个表中匹配的行,那么可以使用内部联接。通过将where i.customerid为null添加到查询中,它将仅返回发票中不匹配的行。

如果客户id是标识客户的共谋,则您应该执行以下操作

select * from Customer
where customer_id not in (select customer_id from invoice)

我建议您也阅读Oracle关于不同类型的表联接的文档。

我猜他只想要发票表中没有的客户。。。所以您应该检查where子句上的i.customerid是否为null。。。要过滤,请按左键join@FredericWHERE子句中的位置是正确的-请参阅此演示-我发表评论时WHERE子句不在那里。。我评论的时候你可能正在编辑。。或者我很困。。。无论如何,回答得很好,谢谢,这似乎达到了我想要的结果。请您解释一下为什么使用“选择1”-它是什么意思/作用?
select * from Customer
where customer_id not in (select customer_id from invoice)
SELECT *
FROM customer c
WHERE NOT EXISTS (
         SELECT 1
           FROM invoice i
          WHERE i.customerid = c.customerid
      )