我有一张下表,我想要在不同国家有相同批号的产品。我需要所有的记录。
表格:

╔════════════╦════════════╦═════════╗
║ Product ID ║ Lot Number ║ Country ║
╠════════════╬════════════╬═════════╣
║          1 ║ L01        ║ US      ║
║          2 ║ L02        ║ US      ║
║          3 ║ L01        ║ UK      ║
║          4 ║ L02        ║ US      ║
║          5 ║ L03        ║ UK      ║
║          6 ║ L03        ║ US      ║
║          7 ║ L03        ║ US      ║
╚════════════╩════════════╩═════════╝

所需输出:
╔════════════╦════════════╦═════════╗
║ Product ID ║ Lot Number ║ Country ║
╠════════════╬════════════╬═════════╣
║          1 ║ L01        ║ US      ║
║          3 ║ L01        ║ UK      ║
║          5 ║ L03        ║ UK      ║
║          6 ║ L03        ║ US      ║
║          7 ║ L03        ║ US      ║
╚════════════╩════════════╩═════════╝

最佳答案

这一点相对简单:

SELECT *
FROM MyTable t1
WHERE EXISTS (
    SELECT * FROM MyTable t2
    WHERE t1.LotNumber=t2.LotNumber AND t1.Country <> t2.Country
)

这是不言而喻的:您希望所有行中至少有一行的批号相同,但国家不同。请注意,要在同一个查询中使用同一个表两次在SQL中表示这一点,您需要给表一个别名:在上面的查询中,这是t1t2

10-02 09:14
查看更多