当我加入 2 个表时,出现错误
select * from picture where id=(SELECT id FROM user where age= 40 )
#1242 - 子查询返回多于 1 行
加入这两个大型数据表的最佳方法是什么?我想要所有的结果
当我加入 2 个表时,出现错误
select * from picture where id=(SELECT id FROM user where age= 40 )
#1242 - 子查询返回多于 1 行
加入这两个大型数据表的最佳方法是什么?我想要所有的结果
替换=
为IN
select * from picture where id in (select id from user where age = 40)
请注意,这只是“半连接”这两个表,即您只会得到图片作为结果,而不是图片-用户关系。如果您实际上是在尝试执行后者,那么您将不得不inner join
使用两个表:
select * from picture p
join user u on p.id = u.id -- are you sure about this join condition?
where u.age = 40
在 where 子句中,当您为 赋值时id
,SQL 需要一个值。问题是第二个查询SELECT id FROM user where age= 40
返回不止一行。
你能做的是
select *
from picture
where id in
(select id from user where age = 40)
或者
select *
from picture p, user u
where p.id = u.id
and u.age = 40
尝试使用 'IN' 而不是 '='
select * from picture where id IN (SELECT id FROM user where age= 40 )
从我所看到的猜测中,
您有一个“图片”表和一个“用户”表。
您想要所有年龄正好是 40 岁的用户的照片。
你可以做一个,
SELECT *
FROM pictures
WHERE user_id IN (SELECT user_id
FROM users
WHERE user_age = 40)
那是你的要求吗?我有任何意义吗?