【问题标题】:How to select different fields that have different values如何选择具有不同值的不同字段
【发布时间】:2017-02-07 14:42:39
【问题描述】:

我有一个这样构造的表:idproduct,field,value

我想要所有具有 field='productdescription' 和值 LIKE 'Keyword' 以及 field='productpackaging' 的值 LIKE 'Keyword2' 的 idproducts

我尝试了类似的方法,但它不起作用......

SELECT idproduct
FROM table
WHERE field='productname'
  AND value LIKE '%Keyword1%'
  AND field = 'productpackaging'
  AND value LIKE '%KeyWord2%'

困难的部分是一个 idproduct 有多个不同的字段,这些字段具有唯一的值。

我做错了什么?

【问题讨论】:

  • 一个列值不能同时是productname和productpackaging。

标签: sql select field


【解决方案1】:

使用HAVING 执行GROUP BY 以确保两个不同的值:

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

【讨论】:

  • 谢谢,你真是个天才!
【解决方案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

【讨论】:

  • HAVING 子句中缺少 AND。
猜你喜欢
  • 1970-01-01
  • 2019-04-16
  • 1970-01-01
  • 2013-12-01
  • 1970-01-01
  • 2020-09-16
  • 1970-01-01
  • 1970-01-01
  • 2011-02-18
相关资源
最近更新 更多