MYSQL错误1242:子查询返回多于1行

时间:2015-01-29 15:41:53

标签: 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行。有人能帮助我吗?

2 个答案:

答案 0 :(得分: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行

答案 1 :(得分:0)

您的一个或两个子查询返回多个结果。在使用=运算符时,您需要返回单个结果。您可以使用IN运算符运行以匹配多个结果:

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');