[英]Complex SQL Query in one table
我有一张下表,我想要在不同国家/地区拥有相同批号的产品。 我需要所有记录。
表:
╔════════════╦════════════╦═════════╗
║ 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
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.