首页 > 解决方案 > sql根据两列或多列的条件选择多行

问题描述

我正在尝试根据匹配特定条件的 3 列选择多行。对于单个搜索,我执行以下操作:

SELECT user_id 
FROM users_to_users 
WHERE user_id = '1' AND contact_user_id = '9' AND contact_blocked = 1

我想提交一组值以返回多行。

所以我的价值观是这样的:

('1', '9', 1), ('2, '9', 1),('3', '9', 1) 等等...

并为匹配的行返回 user_id。本质上,我试图查看哪些用户阻止了用户“9”,以便我可以只将未被阻止的用户添加到下一个语句中。

对 SQL 非常不熟悉,我认为可能可行的方法如下:

SELECT user_id
FROM users_to_users
WHERE (user_id, contact_user_id, contact_blocked) VALUES (...)

但无法做到这一点。有没有办法根据多列的匹配条件选择多行?

标签: mysqlsql

解决方案


您是否尝试将元组与 一起使用in?如果是这样,这有效:

SELECT user_id 
FROM users_to_users 
WHERE (user_id, contact_user_id, contact_blocked) in ( (1, 9, 1), (2, 9, 1), (3, 9, 1) )

但是,可能还有其他方法可以实现您的最终目标。


推荐阅读