SELECT ONLY ONE ROW FROM JOINED TABLE
Ha egy join-olt táblából csak egy sorra van szükségünk, akkor erre lesz szükségünk!
Több megoldást is felvázoltam, a példa egy fórumból az utolsó hozzászólást listázza ki felhasználónként.
MSSQL és MySQL
SELECT UserName, Posts.PostContent FROM Users
INNER JOIN Posts ON Posts.ID = (SELECT MAX(ID) FROM Posts WHERE UserID = Users.ID);
Egy kevésbé elegáns megoldás, de mysql alatt gyorsabb mint az első:
SELECT UserName, Posts.PostContent FROM Posts
INNER JOIN (SELECT MAX(ID) AS MAXID FROM Posts GROUP BY UserID) AS P ON P.MAXID = Posts.ID
INNER JOIN Users ON Users.ID = Posts.UserID;
MSSQL
MSSQL 2005-től használhatjuk a CROSS APPLY-t:
SELECT UserName, P.PostContent FROM Users
CROSS APPLY (SELECT TOP 1 PostContent FROM Posts WHERE UserID = Users.ID ORDER BY ID DESC) AS P
Facebook Comments