这是我的疑问:
SELECT *
FROM designs AS d
LEFT JOIN categories AS c
ON d.category = c.category
GROUP BY d.name ASC LIMIT 0, 10
我想在没有限制条件的情况下返回找到的行数。这是我的思路:
SELECT SQL_CALC_FOUND_ROWS '0', *
FROM designs AS d
LEFT JOIN categories AS c
ON d.category = c.category
GROUP BY d.name ASC LIMIT 0, 10
UNION
SELECT '1', FOUND_ROWS()
这不起作用。我得到一列#mismatch。如何修改查询才能工作?
答案 0 :(得分:0)
您的第一个选择是:
SELECT '0', *
我不知道有多少列'*'(至少3,d.category,d.name,c.category),但是你的第二个查询(在联合之后)应该具有相同的列数。现在,您只在第二个查询中返回两列。
我也在文档中看到,你应该使用UNION ALL而不是UNION,我引用:
仅当使用UNION ALL时,FOUND_ROWS()的值才是精确的。如果使用UNION without ALL,则会发生重复删除,并且FOUND_ROWS()的值仅为近似值。