Sql 如何选择具有不同值的不同字段
我有一个这样构造的表:idproduct、field、value 我希望所有idproducts都有一个字段='productdescription'和一个值'Keyword',还有一个字段='productpackaging'和一个值'Keyword2' 我尝试过这样的东西,但不起作用Sql 如何选择具有不同值的不同字段,sql,select,field,Sql,Select,Field,我有一个这样构造的表:idproduct、field、value 我希望所有idproducts都有一个字段='productdescription'和一个值'Keyword',还有一个字段='productpackaging'和一个值'Keyword2' 我尝试过这样的东西,但不起作用 SELECT idproduct FROM table WHERE field='productname' AND value LIKE '%Keyword1%' AND field = 'produc
SELECT idproduct
FROM table
WHERE field='productname'
AND value LIKE '%Keyword1%'
AND field = 'productpackaging'
AND value LIKE '%KeyWord2%'
困难的部分是一个idproduct有多个不同的字段,这些字段具有唯一的值
我做错了什么?通过
和进行分组,确保两个不同的值:
SELECT idproduct
FROM table
WHERE (field = 'productname' AND value LIKE '%Keyword1%')
OR (field = 'productpackaging' AND value LIKE '%KeyWord2%')
GROUP BY idproduct
HAVING COUNT(DISTINCT field) = 2
一种方法是使用聚合和条件计数:
SELECT idproduct
FROM table
group by idproduct
having count(case when field='productname' AND value LIKE '%Keyword1%' then 1 end) > 0
and count(case when field = 'productpackaging' AND value LIKE '%KeyWord2%' then 1 end) > 0
列值不能同时为productname和productpackaging。HAVING子句中缺少和。谢谢,你是个天才!