当我加入2个表时,我收到错误
select * from picture where id=(SELECT id FROM user where age= 40 )
#1242 - 子查询返回超过1行
加入这两个大数据表的最佳方法是什么?我希望得到所有结果
答案 0 :(得分:5)
将=
替换为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
答案 1 :(得分:3)
在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
答案 2 :(得分:2)
尝试使用'IN'代替'='
select * from picture where id IN (SELECT id FROM user where age= 40 )
答案 3 :(得分:2)
从我猜测的内容中看出来,
你有一张“图片”表和一张“用户”表。
您想要年龄正好为40岁的用户的所有照片。
你可以做一个,
SELECT *
FROM pictures
WHERE user_id IN (SELECT user_id
FROM users
WHERE user_age = 40)
那是你的要求吗?我有意义吗?