SQL 多个相同条件的查询

SQL query with multiple same conditions

我使用 Sybase 数据库并尝试 select 使用几个条件的数据:

table 姓名 "alias"。

a_id, a_data, a_type_id, a_value
------------------------------
    1,   666,       123, "value_1"
    2,   666,       456, "value_2"
    3,   777,       123, "value_4"
    4,   777,       456, "value_5"

我有几个条件:

1. a_type_id = 123 and a_value = "value_1" AND
2. a_type_id = 456 and a_value = "value_2"

所以结果应该是a_data = 666,如果两个条件都满足的话。 查询应该是这样的,但是当然不行,returns 0 个结果:

select a_data from alias where ( a_type_id = 123 AND a_value = "value_1" ) AND (a_type_id = 456 AND a_value = "value_2")

期待结果a_data = 666

有人可以建议一些解决方法吗?可能有 2 个、3 个或更多类似上述条件。

使用聚合和having:

select a_data
from t
where (a_type_id = 123 and a_value = 'value_1') or
      (a_type_id = 456 and a_value = 'value_2')
group by a_data
having count(*) = 2;

注意:这假定 type/value 对在给定的 a_data 值的原始数据中不重复。如果可以,则使用:

having count(distinct a_type_id) = 2