gpt4 book ai didi

mysql - 从 MySQL 中的多行中选择一个值

转载 作者:行者123 更新时间:2023-11-29 04:23:15 24 4
gpt4 key购买 nike

我的SQL语句有点问题。我有一个包含 product_id 和 flag_id 的表,现在我想获取与指定的所有标志匹配的 product_id。我知道你必须自己内部加入它,才能匹配多个,但我不知道它的确切 SQL。

标志表

   product_id | flag_id
1 1
1 51
1 23
2 1
2 51
3 1

我想获取所有 flag_id 为 1、51 和 23 的产品。

最佳答案

get the product_id which matches all the flags specified

这个问题叫做Relational Division .解决它的一种方法是这样做:

  • GROUP BY product_id .
  • 使用 IN 谓词指定要匹配的标志。
  • 使用HAVING子句来确保每个产品都有的标志,

像这样:

SELECT product_id
FROM flags
WHERE flag_id IN(1, 51, 23)
GROUP BY product_id
HAVING COUNT(DISTINCT flag_id) = 3

HAVING 子句将确保所选的 product_id 必须同时具有这三个标志,如果只有其中一个或两个,则将被淘汰。

在此处查看实际效果:

这只会给你:

| PRODUCT_ID |
--------------
| 1 |

关于mysql - 从 MySQL 中的多行中选择一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17468549/

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