gpt4 book ai didi

MySQL 多个 Where 子句

转载 作者:IT老高 更新时间:2023-10-28 23:45:46 25 4
gpt4 key购买 nike

我有一张这样的 table :

id  image_id  style_id  style_value
-----------------------------------
1 45 24 red
1 45 25 big
1 47 26 small
1 45 27 round
1 49 28 rect

如果出现以下情况,我想获取 image_id 列

  • style_id = 24style_value = red
  • style_id = 25style_value = big
  • style_id = 26style_value = round

我做了这样的查询:

$query = mysql_query("SELECT image_id FROM list WHERE (style_id = 24 AND style_value = 'red') AND (style_id = 25 AND style_value = 'big') AND (style_id = 27 AND style_value = 'round')

但我无法得到任何结果。当我用 OR 制作这个样本时,它运行良好。但我必须用 AND 来做到这一点。因为我需要图像 id 既是“红色、大又是矩形”。

我在 Google 上进行了大量搜索,但没有找到任何解决方案。

最佳答案

我认为你是这样的:

SELECT image_id
FROM list
WHERE (style_id, style_value) IN ((24,'red'),(25,'big'),(27,'round'))
GROUP BY image_id
HAVING count(distinct style_id, style_value)=3

不能使用AND,因为值不能同时是24 red25 big27 round同一行,但您需要检查同一 image_id 下的多行中是否存在 style_id, style_value

在此查询中,我使用的是 IN(在此特定示例中,它等同于 OR),并且我正在计算匹配的不同行。如果 3 个不同的行匹配,则意味着该 image_id 的所有 3 个属性都存在,我的查询将返回它。

关于MySQL 多个 Where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14046637/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com