gpt4 book ai didi

SQL 查询具有产品 ID 和该 ID 的多个值的表

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

我为标题道歉,但我不知道如何用几句话更好地解释我的问题。我有一张包含汽车 ID、属性(property) ID 和属性(property)值(value)的表格。类似的东西:

 CarID | propertyID | propertyValue
1 1 black
1 2 diesel
1 3 automatic gear
1 4 80 kW
2 1 blue
2 2 gasoline
2 3 manual gear
2 4 120 kw
3 1 blue
3 2 gasoline
3 3 manual gear
3 4 90 kw

我无法获得有效查询以获取具有属性值的汽车,例如黑色和自动齿轮和柴油。我尝试了相交和并集,但没有结果。

select distinct t.*from table twhere value ilike 'blue' intersect select t.*from table twhere value ilike 'manual gear' union  select t.*from table twhere value ilike '90 kw'

请帮忙。谢谢。

编辑:我必须再次道歉,但我忘了添加更多信息。我添加了除功率之外所有属性都相同的情况,并且我想获得 90 千瓦的汽车。数据库是 PostgreSQL。提前谢谢你。

最佳答案

实现所需内容的一种规范方法是通过 CarID 进行聚合,仅保留具有所需属性的记录,然后检查以确保属性的不同计数与您的所有属性相匹配所需的列表。

WITH cte AS (
SELECT CarID
FROM table
WHERE propertyValue IN ('black', 'automatic gear', 'diesel')
GROUP BY CarID
HAVING COUNT(DISTINCT propertyValue) = 3
)
SELECT * FROM cte

如果您想改为返回所有匹配汽车的记录及其所有列,则可以按如下方式使用 CTE:

SELECT *
FROM table t1
INNER JOIN cte t2
ON t1.CarID = t2.CarID

此处演示:

Rextester

关于SQL 查询具有产品 ID 和该 ID 的多个值的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43437929/

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