我有一个表如下,我想要在不同国家/地区拥有相同批号的产品。我需要所有记录。
表:
╔════════════╦════════════╦═════════╗
║ 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 ║
╚════════════╩════════════╩═════════╝
答案 0 :(得分:2)
那个是相对简单的:
SELECT *
FROM MyTable t1
WHERE EXISTS (
SELECT * FROM MyTable t2
WHERE t1.LotNumber=t2.LotNumber AND t1.Country <> t2.Country
)
这是不言自明的:您希望所有行都至少有一行具有相同的批号,但是不同的国家/地区。请注意,为了在同一个查询中使用相同的表两次在SQL中表达这一点,您需要为表提供一个别名:在上面的查询中,t1
和t2
。