搜索表以获取多个结果和唯一ID SQL

时间:2014-10-31 01:35:52

标签: sql pdo

我有一个包含多行结果的表格,我希望能够搜索多个值,但只能找到一个唯一ID

我不确定如何解释它,但是说我有一个分配了多个项目的用户。例如,我希望能够搜索分配了item 1item 3的用户列表,并返回该用户ID以获取其信息。

示例表:

╔════╦══════╦══════╗
║ ID ║ USER ║ ITEM ║
╠════╬══════╬══════╣
║  1 ║  3   ║  1   ║
║  2 ║  5   ║  12  ║
║  3 ║  3   ║  3   ║
║  4 ║  1   ║  4   ║
╚════╩══════╩══════╝ 

user 3同时归为item 1item 3

我甚至不知道从哪里开始。有任何想法吗??如果需要,我可以尝试添加更多信息,但不确定是什么。

2 个答案:

答案 0 :(得分:2)

这样的事情应该可以胜任:

SELECT *
FROM example
WHERE item IN (1,3)
GROUP BY user
HAVING COUNT(item) = 2

有关类似的内容,请参阅Get all entries from Table B which have a relation to multiple entries (given list) from Table A

答案 1 :(得分:0)

您可以使用group byhaving执行此操作。一般SQL是:

select user
from table t
group by user
having sum(case when item = 1 then 1 else 0 end) > 0 and
       sum(case when item = 3 then 1 else 0 end) > 0;

having子句中的每个条件都会计算与13匹配的行数。 > 0指定每个值都需要存在。