我正在尝试创建一个子查询(不是连接),我将从一个表中列出两个列,并在另一个表中列出限制。
我正在尝试从发票表中列出超过$ 50的所有发票的客户表中的CustomerName和CustomerPhone。
SELECT CustomerName CustomerPhone
FROM CUSTOMER, INVOICE
WHERE TotalAmount IN
(SELECT TotalAmount
FROM INVOICE
WHERE TotalAmount > 50);
如何修复子查询?它显示所有客户名称。
答案 0 :(得分:1)
只需从from
子句中删除无关的笛卡尔积,并为IN
使用适当的列:
SELECT c.CustomerName c.CustomerPhone
FROM CUSTOMER c
WHERE c.CustomerId IN (SELECT i.CustomerId
FROM INVOICE i
WHERE i.TotalAmount > 50
);
你没有给出正确的列名称的指导,所以我猜。
一些建议:
from
语法。答案 1 :(得分:0)
SELECT
CustomerName,
CustomerPhone
FROM CUSTOMER c
INNER JOIN INVOICE i ON
c.CustomerId = i.CustomerId AND
i.TotalAmount > 50
GROUP BY
CustomerName,
CustomerPhone