具有LIMIT、LEFT JOIN和SQL\u CALC\u FOUND\u行的MYSQL查询
我的问题是:具有LIMIT、LEFT JOIN和SQL\u CALC\u FOUND\u行的MYSQL查询,mysql,Mysql,我的问题是: 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
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()
这不管用。我得到一个列不匹配。如何修改查询才能工作?您的第一个选择是:
SELECT '0', *
我不知道有多少列“*”至少是3,d.category,d.name,c.category,但是联合后的第二个查询应该有相同数量的列。现在,在第二个查询中只返回两列
我还在文档中看到,您应该使用UNION ALL而不是UNION,我引用:
仅当使用UNION ALL时,找到的_行的值才是精确的。如果使用UNION WITH ALL,则会发生重复删除,并且找到的行的值仅为近似值
是的,这是我在第二次查询中返回较少列的问题,但我不知道如何使列匹配或找到另一个1查询解决方案,从而可以在不考虑限制的情况下获得所有行的计数。我总是可以运行2个查询,但我认为可能有更优雅的方法。只需在第二个查询中添加更多列:选择“1”,找到行,NULL,NULL,NULL,…,NULL。此外,在我看来,最好总是定义从数据库检索的列,而不是使用星号*