我想按仅具有is_shown = 1的product_group_id选择产品组的行。
Product Table
+----+------------------+---------+----------+
| id | product_group_id | name | is_shown |
+----+------------------+---------+----------+
| 1 | 1 | apple | 1 |
| 2 | 1 | orange | 1 |
| 3 | 1 | kiwi | 0 |
| 4 | 2 | table | 1 |
+----+------------------+---------+----------+
我的sql语句是
SELECT * FROM product WHERE is_shown = 1 GROUP BY product_group_id
我需要的是仅具有is_shown = 1的行。
所以我的预期结果是我只会得到一行
Product Table
+----+------------------+---------+----------+
| id | product_group_id | name | is_shown |
+----+------------------+---------+----------+
| 4 | 2 | table | 1 |
+----+------------------+---------+----------+
购买,我仍然获得product_group_id = 1。
请帮助。谢谢
答案 0 :(得分:0)
您可以为此使用子查询。
获取所有product_group_id并将其用于过滤行。
SELECT
*
FROM
Products
WHERE
product_group_id IN
(
SELECT
product_group_id
FROM
Products
GROUP BY
product_group_id
HAVING
min(is_shown) = 1
)
答案 1 :(得分:0)
然后将它们排除在外:
SELECT
*
FROM
Product
WHERE
product_group_id NOT IN (
SELECT
product_group_id
FROM
Product
WHERE
is_shown = 0
)
选择除product_group_id
之外的所有具有is_shown =0
的产品 。
答案 2 :(得分:0)
希望对您有帮助...
SELECT
*
FROM
Product
WHERE
product_group_id NOT IN (
SELECT
product_group_id
FROM
Product
WHERE
is_shown != 1
)
GROUP BY
product_group_id