MySQL 错误 1242 : Subquery returns more then 1 row

标签 mysql

我有一个概率。我想获得所有用户,下一个用户必须与之对战。我的 sql select 看起来像这样:

SELECT Benutzer.benutzername
                  FROM Benutzer
                  WHERE Benutzer_ID =
                  (SELECT Benutzer_ID_1
                  FROM Spiel WHERE NextToPlay ='35'
                  AND Benutzer_ID_2 ='35' )
                  AND
                  Benutzer_ID =
                  (SELECT Benutzer_ID_2
                  FROM Spiel WHERE NextToPlay ='35'
                  AND Benutzer_ID_1 ='35');

但总是出现错误,我的子查询返回多于 1 行。有人可以帮助我吗?

最佳答案

SELECT Benutzer.benutzername
                  FROM Benutzer
                  WHERE Benutzer_ID IN
                  (SELECT Benutzer_ID_1
                  FROM Spiel WHERE NextToPlay ='35'
                  AND Benutzer_ID_2 ='35' )
                  AND
                  Benutzer_ID IN
                  (SELECT Benutzer_ID_2
                  FROM Spiel WHERE NextToPlay ='35'
                  AND Benutzer_ID_1 ='35');

当使用子查询时,您应该考虑使用 IN,它允许超过 1 个结果。

除非您确定您的查询只会返回 1 行

关于MySQL 错误 1242 : Subquery returns more then 1 row,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28218683/

相关文章:

php - CodeIgniter 中表 A 中的位置但不是 B 中的位置

用于匹配字符串中数字列表的 MySQL 正则表达式

java - MySQL 查询错误 SQLException

mysql - 如何将时间戳转换为日期?

php - Php提交数据库前如何防止mysql注入(inject)

php - 调用事件的 wp_posts 行

MySQL限制语法与查询性能

mysql - 如果我们将 "Where"放在连接表中或放在最后,哪个查询更快?

mysql - 如何每天复制并清空MySQL表?

mysql - 在mysql中选择两个用户通信之间的最新消息