我有这样的MySQL查询:获得总MySQL的结果从查询返回了限制:FOUND_ROWS错误
SELECT Files.GUID, Files.Name, Files.Type, Files.Visibility, Files.CreationDate, Files.OwnerUser, Date, BackupsCount
FROM Files
LEFT JOIN (
SELECT FileGUID, Date, COUNT(*) AS BackupsCount
FROM Versions
GROUP BY FileGUID
) Versions ON Files.GUID = Versions.FileGUID
WHERE Files.ParentFolder = '96251A8B-B2A8-416B-92D7-3509E6A645C7'
ORDER BY Files.Type DESC, CreationDate ASC
LIMIT 0, 50
我想知道这个查询需要多少记录返回如果限制指令是不存在,我用Google搜索,发现我需要添加SELECT SQL_CALC_FOUND_ROWS
和SELECT FOUND_ROWS();
我的问题是:我无法得到它的工作:
SELECT SQL_CALC_FOUND_ROWS * FROM (
SELECT Files.GUID, Files.Name, Files.Type, Files.Visibility, Files.CreationDate, Files.OwnerUser, Date, BackupsCount
FROM Files
LEFT JOIN (
SELECT FileGUID, Date, COUNT(*) AS BackupsCount
FROM Versions
GROUP BY FileGUID
) Versions ON Files.GUID = Versions.FileGUID
WHERE Files.ParentFolder = '96251A8B-B2A8-416B-92D7-3509E6A645C7'
ORDER BY Files.Type DESC, CreationDate ASC
LIMIT 0, 50)
-- Find total rows
SELECT FOUND_ROWS()
假设这是个好主意(我的意思是做一个查询与两个单独的查询),如何获得FOUND_ROWS()
以使用此查询?
谢谢,但我仍然需要行**和**总数。我的意思是添加'SELECT SQL_CALC_FOUND_ROWS'没有显示总数,当我运行它 – TheDude
不,它不会;它只存储**计数,那么你必须在第二个查询中检索它。你可以在一个查询中做到这一点,但它会花费你...我会尽力改进我的答案。 – LSerni