我为这个查询寻找更好的解决方案:
<head />
子查询可以返回超过1行。
我尝试将其更改为:SELECT * FROM USER
WHERE
1 IN (SELECT some_id...) OR
2 IN (SELECT some_id...) OR
3 IN (SELECT some_id...)
,但抛出错误:
操作数应包含1列
我尝试了一些技巧:
WHERE (1,2,3) IN (SELECT some_id...)
- 但问题仍然存在。
子查询的结果只是第二个表中的some_ids。
如果没有多个OR,是否有任何可能的解决方案?
感谢您的帮助。
答案 0 :(得分:1)
我认为你在寻找:
select u.*
from users u
where exists (select 1
from usercategories uc
where uc.userid = u.userid and
uc.categoryid in (1, 2, 3)
);
如果你真的想使用in
,你可以这样做:
select u.*
from users u
where u.userid in (select uc.userid
from usercategories uc
where uc.categorid in (1, 2, 3)
);
答案 1 :(得分:0)
这是你想要做的吗?
SELECT * FROM USER 在(1,2,3)
中的some_id答案 2 :(得分:0)
如果您只是想检查行是否存在,那么您可以使用EXISTS
,例如:
SELECT * FROM USER u
WHERE EXISTS (
SELECT 1 FROM your_table WHERE some_id IN (1,2,3) AND userid = u.id;
);
答案 3 :(得分:0)
你尝试过这样的事吗? (没有子查询)
select user.* from user
join user_category on user.id = user_category.id_user
where user_category.category_id in (1,2,3);