mysql - mysql中的一种简单查询但无法解决

标签 mysql

我之前在这里发布了一个问题:Mysql query with joined tables problems 但没有得到很好的答案,所以我想我把它分解,只显示让我头疼的部分,我可能会更快地得到这个问题的答案,如果我能解决这个问题,我也能解决前面的问题。

这些值指的是 item_id,我想获取 item_id,其中该项目指的是 (('good' OR 'bad') AND '快')

所以 item_id 1 必须列出来,因为它既好又快 item_id 2 不应该列出,因为它速度不快。

我想要得到的结果

item_id
  1
  5

如果我有这样一张 table

id    item_id    value
1      1        'good'
2      1        'fast'

3      2        'good'
4      2        'slow'

5      3        'good'
6      3        'slow'

7      4        'bad'
8      4        'slow'

9      5        'bad'
10     5        'fast'

11     6        'moderate'
12     6        'fast'

有人可以帮助我吗?

最佳答案

一种理解方式是:您希望每个项目都有一个声明,因此您可以按项目聚合和分组。标准出现在 HAVING 子句中。

select item_id
from mytable
group by item_id
having count(case when value = 'fast' then 1 end) >= 1
   and count(case when value in ('good','bad') then 1 end) >= 1;

(您还可以使用 sum(case when value = 'fast' then 1 else 0 end) >= 1max(case when value = 'fast' then 1 else 0 end) = 1 或沿这些行的一些表达式。COUNT(expression) 计算不为空的表达式。由于我省略了 ELSE 分支,非- 匹配记录结果为 null,因此不计算在内。有些人更喜欢 SUM,有些人更喜欢 COUNT - 这最终是个人喜好问题。)

关于mysql - mysql中的一种简单查询但无法解决,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41810849/

相关文章:

mysql - 每次在 magento 中使用某个优惠券代码时,如何查看完整的订单详细信息?

mysql - 如何将内存缓存与 SailsJS 模型一起使用?

mysql - 是否有可能获得两个常量(相同)样本的 "ideal"全文相关性?

php - 从选择查询 php 返回结果数组

MySQL "in"命令

mysql - 使用临时的;使用文件排序..慢查询

mysql - 当数据包含'时使用PHP将数据插入mysql

Mysql查询查找替换列值

python - 超过锁等待超时;尝试使用 python 更新 mysql 表时尝试重新启动事务'错误

mysql - 如何在 codeigniter 中编写 3 where_in() 的查询