我一直在尝试执行此查询,但它无效。
如果有人帮忙,我会很感激;
SELECT DISTINCT(fld_tech_id)
FROM tbl_tech_properties
WHERE fld_tech_category_value_id = 236
AND fld_tech_category_value_id = 234
答案 0 :(得分:4)
您的WHERE
条件不可能匹配,因为它针对表中的每一行进行了测试,并且没有一行可以同时使fld_tech_category_value_id
等于234和236。相反,您应该按fld_tech_id进行分组,并检查您的组是否包含两行。
SELECT fld_tech_id
FROM tbl_tech_properties
WHERE fld_tech_category_value_id IN (234, 236)
GROUP BY fld_tech_id
HAVING COUNT(DISTINCT fld_tech_category_value_id) = 2
查看在线工作:sqlfiddle
答案 1 :(得分:2)
<击> 你为什么不用
SELECT DISTINCT fld_tech_id
FROM tbl_tech_properties
WHERE fld_tech_category_value_id IN (236,234) ;
基于参考样本数据的结果:
击>
样本表:
FLD_TECH_ID FLD_TECH_CATEGORY_VALUE_ID
1 234
2 256
3 236
3 250
2 226
3 216
1 240
1 236
<击> 结果击>
<击>FLD_TECH_ID
1
3
REFERENCE SQLFIDDLE
击>
有效的解决方案:
SELECT DISTINCT fld_tech_id
FROM tbl_tech_properties AS t
WHERE EXISTS
( SELECT *
FROM tbl_tech_properties AS t1
WHERE t1.fld_tech_id = t.fld_tech_id
AND t1.fld_tech_category_value_id = 236
)
AND EXISTS
( SELECT *
FROM tbl_tech_properties AS t2
WHERE t2.fld_tech_id = t.fld_tech_id
AND t2.fld_tech_category_value_id = 234
) ;