我尝试使用子查询从一个表中选择一些数据,主要目标是选择每个id的最后一个匹配项(last lign=max nulign),因此我使用:
SELECT * FROM TABLE1 WHERE NULIGN= (SELECT DISTINCT MAX(NULIGN) FROM TABLE1 GROUP BY ID);
我得到以下错误:单行子查询返回多行。那么,如何用最大对齐数显示所有引用?
pbwdgjma1#
你也可以选择加入
SELECT a.* FROM TABLE1 a JOIN( SELECT ID,MAX(NULIGN) MAX_NULIGN FROM TABLE1 GROUP BY ID ) b ON a.ID = b.ID AND a.NULIGN= b.MAX_NULIGN;
或者将子查询作为相关子查询
SELECT * FROM TABLE1 a WHERE a.NULIGN= (SELECT MAX(NULIGN) FROM TABLE1 WHERE ID = a.ID)
eqzww0vc2#
子查询返回的行数超过一行(基于groupbyid),因此需要一个in子句
SELECT * FROM TABLE1 WHERE NULIGN IN ( SELECT DISTINCT MAX(NULIGN) FROM TABLE1 GROUP BY ID);
或者你也可以用join做同样的事情
SELECT * FROM TABLE1 INNER JOIN (SELECT DISTINCT MAX(NULIGN) max_nulign FROM TABLE1 GROUP BY ID) T ON T.max_nulign = TABLE1.NULIGN ;
wgxvkvu93#
更改=并在运算符中使用
SELECT * FROM TABLE1 WHERE NULIGN IN (SELECT DISTINCT MAX(NULIGN) FROM TABLE1 GROUP BY ID);
因为当您使用=,运算符只希望rhs上有1个值。所以如果你想给一组值,使用
3条答案
按热度按时间pbwdgjma1#
你也可以选择加入
或者将子查询作为相关子查询
eqzww0vc2#
子查询返回的行数超过一行(基于groupbyid),因此需要一个in子句
或者你也可以用join做同样的事情
wgxvkvu93#
更改=并在运算符中使用
因为当您使用=,运算符只希望rhs上有1个值。所以如果你想给一组值,使用