gpt4 book ai didi

mysql - SQL - 每个 ID 只显示一行

转载 作者:行者123 更新时间:2023-11-29 05:54:33 25 4
gpt4 key购买 nike

我的 sql 查询需要一些帮助。我目前得到以下信息:

SELECT dbo.PREISGRUPPEN.ARTIKELNR, KEK, PREIS, dbo.PREISGRUPPEN.ROWID 
FROM dbo.PREISGRUPPEN, dbo.ARTIKEL
WHERE dbo.PREISGRUPPEN.GRUPPE = 5 AND dbo.PREISGRUPPEN.ARTIKELNR = dbo.ARTIKEL.ARTIKELNR
ORDER BY dbo.PREISGRUPPEN.ARTIKELNR, dbo.PREISGRUPPEN.ROWID

这个查询得到以下结果:

ARTIKELNR   KEK             PREIS   ROWID 
18661840 6.650000000000 4.65 5076049
18661840 6.650000000000 7.44 5448817
18661840 6.650000000000 7.98 5604886
18661841 6.650000000000 4.65 5076050
18661841 6.650000000000 7.44 5448838
18661841 6.650000000000 7.98 5604887
18661842 13.360000000000 9.36 5076051
18661842 13.360000000000 14.96 5448863
18661842 13.360000000000 16.03 5604888
18661843 5.240000000000 7.34 5076052
18661843 5.240000000000 5.87 5448873
18661843 5.240000000000 6.29 5604889
18661844 4.600000000000 6.45 5076053
18661844 4.600000000000 5.15 5448875
18661844 4.600000000000 5.52 5604890
18661845 21.470000000000 25.76 5449243
18661846 6.650000000000 4.65 5076054
18661846 6.650000000000 7.44 5448806
18661846 6.650000000000 7.98 5604891
18661847 6.650000000000 4.65 5076055
18661847 6.650000000000 7.44 5448822
18661847 6.650000000000 7.98 5604892

问题是,我只想要每个 ARTIKELNR 一次。它应该始终是具有最高 ROWID 的那个。基本上我的结果应该如下表所示:

ARTIKELNR   KEK             PREIS   ROWID 
18661840 6.650000000000 7.98 5604886
18661841 6.650000000000 7.98 5604887
18661842 13.360000000000 16.03 5604888
18661843 5.240000000000 6.29 5604889
18661844 4.600000000000 5.52 5604890
18661845 21.470000000000 25.76 5449243
18661846 6.650000000000 7.98 5604891
18661847 6.650000000000 7.98 5604892

我该如何解决我的问题?我尝试了 Max(ROWID) 和嵌套的选择查询,但没有成功。我的想法用完了。

谁能帮帮我?

最佳答案

听起来你很接近!在这里,我使用了一个公用表表达式 (CTE),因此我使用的是一个表。然后我找到每个 ARTIKELNR 的 MAX ROWID,然后将它们连接回 CTE 以获取最高 ROWID 的其余信息。这将为具有重复最大 ROWID 的任何 ARTIKELNR 返回多行。但如果 R​​OWID 是唯一的,那将不是问题。

WITH cte AS (
SELECT dbo.PREISGRUPPEN.ARTIKELNR, KEK, PREIS, dbo.PREISGRUPPEN.ROWID
FROM dbo.PREISGRUPPEN, dbo.ARTIKEL
WHERE dbo.PREISGRUPPEN.GRUPPE = 5 AND dbo.PREISGRUPPEN.ARTIKELNR = dbo.ARTIKEL.ARTIKELNR
ORDER BY dbo.PREISGRUPPEN.ARTIKELNR, dbo.PREISGRUPPEN.ROWID
)

SELECT cte.*
FROM cte
INNER JOIN (
SELECT ARTIKELNR, MAX(ROWID) AS ROWID
FROM cte
GROUP BY ARTIKELNR
) AS A
ON cte.ARTIKELNR = A.ARTIKELNR AND cte.ROWID = A.ROWID

关于mysql - SQL - 每个 ID 只显示一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50840173/

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