微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQL 查询错误:子选择返回 2 列 - 预期为 1

如何解决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 举报,一经查实,本站将立刻删除。