gpt4 book ai didi

mysql - SQL 子查询中的多个结果

转载 作者:行者123 更新时间:2023-11-29 18:48:42 25 4
gpt4 key购买 nike

我有 2 个表,如下所示:

 1. reports:                   2. schedule:
| id | data | | rpt | username |
-------|-------------| |------|----------|
| 1110 | aaaaaaaaa | | 1110 | name3 |
| 1120 | bbbbbbbbb | | 1110 | name3 |
| 1130 | ccccccccc | | 1110 | name1 |
| 1140 | ddddddddd | | 1130 | name1 |
| 1150 | eeeeeeeee | | 1140 | name1 |
| 1160 | fffffffff | | 1140 | name2 |
| 1150 | name2 |
| 1160 | name3 |

当搜索用户名时,我想检查时间表表中出现该名称的所有报告 ID(每个报告可能会出现多次,我只需要一次),然后获取结果表报告 ID 和数据。

所以对于name3我应该得到:1110 aaaaaaaaa | 1160 fffffffff

对于name1 :1110 aaaaaaaaa | 1130 ccccccccc | 1140 ddddddddd

我尝试使用以下代码行来做到这一点:

SELECT * FROM reports WHERE id=(SELECT DISTINCT rpt FROM schedule WHERE username='name3')

问题是,在 name3 的情况下,我收到此错误消息:

[MySQL][ODBC 3.51 Driver][mysqld-5.6.33]Subquery returns more than 1 row

正确的解决方法是什么?

最佳答案

正确的比较是= ANYIN。但是,当使用子查询时,您不需要在子查询中使用 SELECT DISTINCT 。所以,这应该写成:

SELECT r.*
FROM reports r
WHERE r.id IN (SELECT s.rpt FROM s.schedule WHERE s.username = 'name3');

在查询中引用多个表时,应始终限定列名称。这有助于防止意外错误。

关于mysql - SQL 子查询中的多个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44461117/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com