我有一张下表,我想要在不同国家有相同批号的产品。我需要所有的记录。
表格:
╔════════════╦════════════╦═════════╗
║ 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中表示这一点,您需要给表一个别名:在上面的查询中,这是
t1
和t2
。