【问题标题】:sql - multiple primary keys on inner joinsql - 内部连接上的多个主键
【发布时间】:2017-11-09 20:01:18
【问题描述】:

我需要计算具有独特 ItemID 的所有行:具有该 ItemID 的项目上具有最高 RevisionID 的行。这是我的代码(相关部分):

(
SELECT count(parent.ItemID) FROM item AS parent
INNER JOIN item AS child ON parent.ItemID = child.ItemID AND parent.RevisionID = Max(child.RevisionID)
WHERE parent.orderID = orders.orderID AND parent.StatusInfo != '2' 
) as notordered,  

如果您取出“AND parent.RevisionID = Max(child.RevisionID)”,则该代码有效,但随后它会占用所有项目的修订版。我知道我不能在 INNER JOIN ON 的情况下使用“Max”,但我找不到一种方法来获得它,它与带有子查询的规则 parent.ItemID = child.ItemID 一致。 请帮忙。

示例:
输入
A- ID:1 RevID:2
B- ID:1 RevID:3
C- ID:2 RevID:4
返回:
B & C,因为它们有唯一的 ID:s 和具有该 ID 的最高 RevID

【问题讨论】:

标签: mysql sql subquery max inner-join


【解决方案1】:

http://stackoverflow.com/questions/17882073/mysql-select-max-date-inside-a-join-statement/17882188#17882188 提示的正确答案是:

SELECT count(parent.ItemID) FROM item as parent JOIN (SELECT itemID, MAX(RevisionID) as MaxRevision FROM Item GROUP BY ItemID) as child ON parent.ItemID = child.ItemID AND parent.RevisionID = child.MaxRevision WHERE parent.orderID = orders.orderID ) 如未排序,

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-09
    • 1970-01-01
    • 2020-09-24
    • 1970-01-01
    • 2012-04-07
    • 1970-01-01
    • 2019-06-06
    相关资源
    最近更新 更多