MySQL匹配任何集合都是子查询

时间:2017-05-27 12:04:31

标签: mysql sql

我为这个查询寻找更好的解决方案:

<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,是否有任何可能的解决方案?

感谢您的帮助。

4 个答案:

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