gpt4 book ai didi

mysql - 获取具有特定 revision_status 的行

转载 作者:行者123 更新时间:2023-11-29 10:27:30 25 4
gpt4 key购买 nike

我正在使用 mysql,我有两个表:

产品表:

| id | name      | prices | revision_id |
|----|-----------|--------|-------------|
| 1 | Produkt 1 | 10 | 1 |
| 2 | Produkt 1 | 4 | 2 |
| 3 | Produkt 1 | 2 | 3 |
| 4 | Product 2 | 42 | 4 |
| 5 | Produkt 2 | 43 | 5 |
| 6 | Produkt 3 | 78 | 6 |

每种产品都有价格变动。这就是为什么名称仍然相同,但产品的价格不同。

修订表:

| id | revision_status |
|----|-----------------|
| 1 | 1 |
| 2 | 0 |
| 3 | 0 |
| 4 | 1 |
| 5 | 0 |
| 6 | 1 |

在修订表中,0 表示开放变更,未批准变更。 1 表示 - 已关闭 - 已批准的更改。

预期结果:

| id | name      | prices | revision_id | revision_status |
|----|-----------|--------|-------------|-----------------|
| 1 | Produkt 1 | 10 | 1 | 1 |
| 2 | Produkt 1 | 4 | 2 | 0 |
| 3 | Produkt 1 | 2 | 3 | 0 |
| 4 | Product 2 | 42 | 4 | 1 |
| 5 | Produkt 2 | 43 | 5 | 0 |

基本上,我希望所有有修订的产品 - revision_status 为 0,以查看哪些产品实际上有修订。

例如:产品 3 没有任何价格变化,因此它不应出现在最终结果中。

我尝试了以下方法:

select *
from product
JOIN revisions
on product.revisions_id = revisions.id
ORDER
BY product.name

但是,我的表中仍然显示产品 3,并且我不确定如何获取 revision_status 为 0 的所有产品。

非常感谢您的回复!

最佳答案

根据我的解释,您正在寻找具有多个版本的产品。仅对 revision_status = 0 进行过滤不会产生您预期的结果。以下查询可能会回答您的问题(查找具有超过 1 次修订的产品):

SELECT *
FROM product AS p
INNER JOIN revisions AS r ON p.revision_id = r.id
WHERE p.name IN (
SELECT p.name
FROM product AS p
INNER JOIN revisions AS r ON p.revision_id = r.id
GROUP BY p.name
HAVING COUNT(r.revision_status) > 1)
ORDER BY p.name

这将产生您预期的结果。请参阅 sqlfiddle 中的示例.

关于mysql - 获取具有特定 revision_status 的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48033029/

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