我想知道如何根据查询返回具有另一个“ value ”的值,嗯我不知道它应该被称为什么, identifier < / em>的?例如,我有以下数据:
id | date | user | item | material | Text | Description |
------+------------+------+-------+--------------------+------+-------------+
12345 | 31.03.2015 | ID00 | 00010 | 000000001011000106 | abcd | something |
12345 | 31.03.2015 | ID00 | 00020 | 000000001011010105 | abcd | test |
12345 | 31.03.2015 | ID00 | 00030 | 000000001011020106 | abcd | something |
12345 | 31.03.2015 | ID00 | 00040 | 000000001011020104 | abcd | something |
44455 | 31.03.2015 | ID00 | 00010 | 000000001011040106 | abcd | something |
44455 | 31.03.2015 | ID00 | 00020 | 000000001011000105 | abcd | something |
44455 | 31.03.2015 | ID00 | 00030 | 000000001011010104 | abcd | something |
67890 | 31.03.2015 | ID00 | 00010 | 000000001011100402 | abcd | something |
77777 | 31.03.2015 | ID00 | 00010 | 000000001011100402 | bcad | something |
80808 | 31.03.2015 | ID00 | 00010 | 000000001011140102 | abcd | something |
90009 | 31.03.2015 | ID00 | 00010 | 000000001011100102 | dcba | something |
66666 | 01.04.2015 | ID00 | 00010 | 000000001011160101 | cdab | somesome |
而且,我希望仅根据 id 和 description 获得结果。
假设所有id '44455'都有描述的值,即'something'。 不应显示。但对于id '12345',除了1行包含不同的值,'test'
因此,应显示的行是包含值 null 的 description ,以及包含基于标识符< description 的不同值的行 ID 即可。从上面的例子中,它应该打印出来: 如何在此案例中查询条件?有什么建议吗? 提前致谢id | date | user | item | material | Text | Description |
------+------------+------+-------+--------------------+------+-------------+
12345 | 31.03.2015 | ID00 | 00010 | 000000001011000106 | abcd | something |
12345 | 31.03.2015 | ID00 | 00020 | 000000001011010105 | abcd | test |
12345 | 31.03.2015 | ID00 | 00030 | 000000001011020106 | abcd | something |
12345 | 31.03.2015 | ID00 | 00040 | 000000001011020104 | abcd | something |
答案 0 :(得分:2)
您可以使用EXISTS
进行查询。
假设您的表名是tbl,则查询为:
select *
from tbl a
where exists (select 1 from tbl b where a.id = b.id and b.description <> 'Something');
答案 1 :(得分:0)
你可以尝试这个查询
select *
from tbl a
where 1 < (select count(*) from tbl b where a.id = b.id group by b.description);