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
我使用 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