-4

我有这张桌子:

id        item_id         attribute           quantity
1         1               a                   2
2         1               b                   3
3         1               c                   4
4         2               a                   3
5         2               b                   3
6         3               a                   2
7         3               b                   1

我想获取所有不同的 item_id,其属性“a”的数量超过 1,同时属性“b”的数量超过 2。

如果我把

select item_id
from table_name
where (attribute = a and quantity > 1) and (attribute = b and quantity >2)

我没有得到任何结果...

我如何做到这一点?请有人帮忙,这是我下周要交的一篇论文。

4

3 回答 3

1

将 where 子句更改为:

WHERE (attribute = a and quantity > 1) OR (attribute = b and quantity >2)

并且您选择:

SELECT DISTINCT item_id
于 2013-02-16T18:51:16.723 回答
0

编辑:解决了!经过一个小时的搜索,我发现了这个问题,它与我的基本相同,并且有一个有效的答案(第一个)。

SQL - 为复杂的动态行选择查询

基本上,这个人所做的就是根据需要多次将表连接到自身,添加下一个条件作为后续连接表的条件,名称不同。

于 2013-02-16T19:03:01.583 回答
0

尝试这个

   select item_id
   from Table1
   where (attribute = 'a' and quantity > 1) or (attribute = 'b' and quantity >2)
   group by item_id

SQL 演示在这里

于 2013-02-16T18:51:01.310 回答