错误1242(21000):子查询返回的行数超过1?

时间:2019-11-06 03:34:07

标签: mysql

我正在学习SQL,因此我测试了一些查询:

mysql> select * from users where id = 1 or (select id from users);

结果:

  

错误1242(21000):子查询返回的行数超过1

我发现,如果我使用任何concat之类的group_concat函数,该错误就会消失。

但是我需要知道为什么会发生错误,我只是在子查询中选择1列“ id”。

1 个答案:

答案 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