我正在学习SQL,因此我测试了一些查询:
mysql> select * from users where id = 1 or (select id from users);
结果:
错误1242(21000):子查询返回的行数超过1
我发现,如果我使用任何concat
之类的group_concat
函数,该错误就会消失。
但是我需要知道为什么会发生错误,我只是在子查询中选择1列“ id”。
答案 0 :(得分:0)
(select id from users)
示例中,将是
|----|
| id |
|----|
| 1 |
| 2 |
| .. |
| n |
|----|
错误说:
子查询返回1行以上
正如您所看到的,您的子查询返回很多行。
在您的示例中,我看到了。您希望加载完整的用户数据(如果存在),否则要从第一个用户加载ID。为什么不做类似的事情
select * from users where id = 1 or not id = 1;
JQL小提琴示例:http://sqlfiddle.com/#!9/ad769e/2