gpt4 book ai didi

数据库。 SQL_CALC_FOUND_ROWS 和 FOUND_ROWS() 工作不正常

转载 作者:行者123 更新时间:2023-11-29 02:15:40 25 4
gpt4 key购买 nike

我在使用 MYSQL 时遇到问题。 SQL_CALC_FOUND_ROWS 和 FOUND_ROWS() 工作不正常。

问题:

  • 第一次总返回1
  • 第二次总数返回正确的3,500 名

MYSQL版本:

mysql Ver 14.14 Distrib 5.7.10,适用于 osx10.9 (x86_64),使用 EditLine 包装器

我正在尝试从表中返回一个列表,并且该列表中的另一列将针对每一行重复。 (包含选择的总行数)。

这样我就可以在一次选择中获取所有数据和总行...

选择如下。

    SELECT SQL_NO_CACHE SQL_CALC_FOUND_ROWS * FROM 
(SELECT A.MEMBER_ID, A.USERNAME, B.ZIP, B.INTERESTS, C.ADDRESS
FROM MEMBER A, DATA B, ADDRESS C
WHERE A.GENDER = "F"
AND A.MEMBER_ID = B.MEMBER_ID
AND A.MEMBER_ID = C.MEMBER_ID
AND UPPER (A.CANCEL_FLAG) = "N"
ORDER BY A.LAST_LOGIN_DATE DESC ) res,
(select FOUND_ROWS() as "total_result" from dual ) tot
Limit 1, 15

最佳答案

如果你想让它在 mysql 中工作,你可以使用 COUNT 做一个子查询。如果您可以假设 MEMBER_ID 始终存在于 DATA 中,您可能可以通过仅计算 MEMBER 表来使其更简单>地址

SELECT * FROM (
SELECT A.MEMBER_ID, A.USERNAME, B.ZIP, B.INTERESTS, C.ADDRESS
FROM MEMBER A, DATA B, ADDRESS C
WHERE A.GENDER = "F"
AND A.MEMBER_ID = B.MEMBER_ID
AND A.MEMBER_ID = C.MEMBER_ID
AND UPPER (A.CANCEL_FLAG) = "N"
ORDER BY A.LAST_LOGIN_DATE DESC
) res, (
SELECT COUNT(*) as "total_result"
FROM MEMBER A
JOIN DATA B ON A.MEMBER_ID = B.MEMBER_ID
JOIN ADDRESS C ON A.MEMBER_ID = C.MEMBER_ID
WHERE A.GENDER='F'
) tot
LIMIT 1, 15

参见 https://www.percona.com/blog/2007/08/28/to-sql_calc_found_rows-or-not-to-sql_calc_found_rows/讨论这是否可怕。

关于数据库。 SQL_CALC_FOUND_ROWS 和 FOUND_ROWS() 工作不正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40298297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com