MySql 按未显示正确结果排序
MySql Order by not showing correct results
我有 3 个 table 项目、讨论和评论。项目有多个讨论,每个讨论都有多个评论。
我想将最后的讨论添加到没有评论的讨论 table 中。我还需要特定讨论链接到的项目详细信息。
我的查询是这样的:SELECT
p.PRO_Id, p.PRO_Name,
d.DIS_ThreadDesc, dev.DEV_Name, loc.LOC_Name, d.USE_Id, d.DIS_Date
FROM projects p
LEFT JOIN discussions d ON p.PRO_Id = d.PRO_Id
LEFT JOIN developer dev ON p.DEV_Id=dev.DEV_Id
LEFT JOIN locality loc ON p.LOC_Id=loc.LOC_Id
WHERE
p.PRO_Status=1 and d.DIS_Status=1
AND d.DIS_Id NOT IN ( select DIS_Id from comments where COM_Status=2 )
GROUP BY p.PRO_Id
ORDER BY d.DIS_Id desc LIMIT 3
我正在按降序排列讨论 table (ORDER BY d.DIS_Id) 但它仍然采用第一条记录而不是最后一条记录。我在这里做错了什么??
试试这个:
SELECT p.PRO_Id, p.PRO_Name, d.DIS_ThreadDesc, dev.DEV_Name,
loc.LOC_Name, d.USE_Id, d.DIS_Date
FROM projects p
INNER JOIN discussions d ON p.PRO_Id = d.PRO_Id
INNER JOIN (SELECT d.PRO_Id, MAX(d.DIS_Id) lastDisc
FROM discussions d
WHERE d.DIS_Status = 1
GROUP BY d.PRO_Id
) AS A ON d.PRO_Id = A.PRO_Id AND d.DIS_Id = A.lastDisc
LEFT OUTER JOIN comments c ON d.DIS_Id = c.DIS_Id AND c.COM_Status=2
LEFT OUTER JOIN developer dev ON p.DEV_Id = dev.DEV_Id
LEFT OUTER JOIN locality loc ON p.LOC_Id = loc.LOC_Id
WHERE p.PRO_Status = 1 AND c.DIS_Id IS NULL
ORDER BY d.DIS_Id DESC;
我有 3 个 table 项目、讨论和评论。项目有多个讨论,每个讨论都有多个评论。
我想将最后的讨论添加到没有评论的讨论 table 中。我还需要特定讨论链接到的项目详细信息。
我的查询是这样的:SELECT p.PRO_Id, p.PRO_Name, d.DIS_ThreadDesc, dev.DEV_Name, loc.LOC_Name, d.USE_Id, d.DIS_Date
FROM projects p LEFT JOIN discussions d ON p.PRO_Id = d.PRO_Id LEFT JOIN developer dev ON p.DEV_Id=dev.DEV_Id LEFT JOIN locality loc ON p.LOC_Id=loc.LOC_Id WHERE p.PRO_Status=1 and d.DIS_Status=1 AND d.DIS_Id NOT IN ( select DIS_Id from comments where COM_Status=2 ) GROUP BY p.PRO_Id ORDER BY d.DIS_Id desc LIMIT 3
我正在按降序排列讨论 table (ORDER BY d.DIS_Id) 但它仍然采用第一条记录而不是最后一条记录。我在这里做错了什么??
试试这个:
SELECT p.PRO_Id, p.PRO_Name, d.DIS_ThreadDesc, dev.DEV_Name,
loc.LOC_Name, d.USE_Id, d.DIS_Date
FROM projects p
INNER JOIN discussions d ON p.PRO_Id = d.PRO_Id
INNER JOIN (SELECT d.PRO_Id, MAX(d.DIS_Id) lastDisc
FROM discussions d
WHERE d.DIS_Status = 1
GROUP BY d.PRO_Id
) AS A ON d.PRO_Id = A.PRO_Id AND d.DIS_Id = A.lastDisc
LEFT OUTER JOIN comments c ON d.DIS_Id = c.DIS_Id AND c.COM_Status=2
LEFT OUTER JOIN developer dev ON p.DEV_Id = dev.DEV_Id
LEFT OUTER JOIN locality loc ON p.LOC_Id = loc.LOC_Id
WHERE p.PRO_Status = 1 AND c.DIS_Id IS NULL
ORDER BY d.DIS_Id DESC;