我开始学习SQL,并且由于Subquery返回多于1行而收到错误。 在此查询中,我试图创建一个包含在orders和customers表上均包含customer的表。 我在哪里做错了?
SELECT (SELECT DISTINCT customerNumber FROM orders),
(SELECT customerName FROM customers WHERE customerNumber = (SELECT DISTINCT customerNumber FROM orders));
答案 0 :(得分:1)
您只需做INNER JOIN
:
SELECT DISTINCT o.customerNumber, c.customerName
FROM orders o INNER JOIN
customers C
ON C.customerNumber = o.customerNumber;
Customer表包含与订单关联的多个客户,因此子查询将返回多个记录。
因此,这里的子查询将不起作用。改为使用INNER JOIN
。
答案 1 :(得分:0)
发表评论的时间有点长。
SQL中有不同类型的子查询。关键区别在于行数:
可以在要使用常量表达式的地方使用标量子查询。例如,您可以为=
或select
使用常量。但是,您不能在这些位置使用组合。
您的查询混淆了这些类型的子查询。您尚未指定要执行的操作,但是整个查询需要重新编写,大概使用JOIN
。