我试图使用子查询从一个表中选择一些数据,主要目的是选择每个ID的最后一次出现(最后一个ligne =最大NULIGN),所以我使用了:

SELECT * FROM TABLE1 WHERE NULIGN= (SELECT DISTINCT MAX(NULIGN) FROM TABLE1 GROUP BY ID);


我收到以下错误:


  单行子查询返回多个行。


那么,如何显示所有具有最大ligne数的事件?

最佳答案

或者,您可以使用join

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)

关于mysql - 从一个表中选择:单行子查询返回多个行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48059845/

10-12 05:30