如何解决SQL 查询错误:子选择返回 2 列 - 预期为 1
当我编写以下查询时:
SELECT name
FROM people
WHERE phone_number IN
(SELECT caller,receiver FROM phone_calls WHERE month = 7 AND day = 28 AND year = 2020 AND duration < 60);
我收到以下错误:sub-select 返回 2 列 - 预期为 1
不知道问题出在哪里...
来电者是带有电话号码的文本。
接收器是带有电话号码的文本。
我的目标是创建一个列表,而不是向我显示来电者和接收者的电话号码,而是显示他们的姓名。
另外,这是我在 CS50 的五十村的尝试。
解决方法
你不明白错误的哪一部分? in
的子查询只能包含一列。
就您而言,我认为您希望任一列匹配。因此,请改用 exists
:
SELECT p.name
FROM people p
WHERE EXISTS (SELECT 1
FROM phone_calls pc
WHERE pc.month = 7 AND pc.day = 28 AND pc.year = 2020 AND
pc.duration < 60 AND
p.phone_number IN (pc.caller,pc.receiver)
);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。