我一直在尝试执行此查询,但它不起作用。
如果有人提供帮助,将不胜感激;
SELECT DISTINCT(fld_tech_id)
FROM tbl_tech_properties
WHERE fld_tech_category_value_id = 236
AND fld_tech_category_value_id = 234
您的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
你为什么不直接使用
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
一个有效的解决方案:
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
) ;