选择一列中相同但在另一列中不同的行

gma*_*mus 18 sql sql-server-2008

X    Y    DATE
1    20   20120101
1    21   20120101
2    30   20120201
3    40   20120201
3    41   20120301
Run Code Online (Sandbox Code Playgroud)

我想选择具有X相同的另一行的任何行,但日期不同,即答案是

3    40   20120201
3    41   20120301
Run Code Online (Sandbox Code Playgroud)

Yuc*_*uck 22

试试这个...

SELECT *
FROM YourTable
WHERE X IN (
  SELECT T1.X
  FROM YourTable T1 INNER JOIN
       YourTable T2 ON T1.X = T2.X
  WHERE T1.DATE <> T2.DATE
);
Run Code Online (Sandbox Code Playgroud)

这应该适用于大多数符合ANSI标准的数据库产品.

  • @gmaximus:您使用sql-server-2008标记了您的问题,并且您说您使用的是SQL Server 2008.那么当您说供应商的sql实现不允许嵌套选择时,您的意思是什么?SQL Server 2008绝对允许嵌套选择. (2认同)