mysql - 如何在 MySQL 中正确执行此有限分组查询?

标签 mysql limits

我有一个查询返回 25 名医生的列表,需要在列中反射(reflect)他们上传的文件 (cloud_uploads)。问题是,我不想限制列出的文件数量,但该限制似乎也适用于文件。我见过的其他类似问题有相反的问题 - 他们想限制文件而不限制返回的总行数。我的医生上传的文件超过 25 个,但列表仅显示前 25 个文件,而不是全部。

因为这是一个以编程方式生成的查询,所以我无法将其分成多个查询。它必须是一。所以,如果答案是做不到,我可以接受。

这是当前查询:

SELECT SQL_CALC_FOUND_ROWS records.instance_id,
        instances.patient_id,
        TRIM(form_1_data.field_2) AS field_0,
        TRIM(form_1_data.field_1) AS field_1,
        TRIM(form_1_data.field_87) AS field_2,
        GROUP_CONCAT(DISTINCT CONCAT (
                        extensible_8_data.field_953,
                        '|||',
                        cloud_uploads.NAME
                        ) SEPARATOR '<br />') AS field_3
FROM form_6_data AS records
LEFT JOIN instances
        ON instances.id = records.instance_id
LEFT JOIN extensible_8_data
        ON records.instance_id = extensible_8_data.instance_id
LEFT JOIN cloud_uploads
        ON extensible_8_data.field_953 = cloud_uploads.id
LEFT JOIN form_1_data
        ON records.field_89 = form_1_data.instance_id
WHERE instances.form_id = 6
        AND instances.active = 1
        AND (
                cloud_uploads.active = 1
                OR cloud_uploads.active IS NULL
                )
GROUP BY records.instance_id
ORDER BY records.instance_id DESC LIMIT 0, 25

最佳答案

加入一个子查询,选择 25 位感兴趣的医生及其文件:

SELECT SQL_CALC_FOUND_ROWS records.instance_id,
        instances.patient_id,
        TRIM(form_1_data.field_2)  AS field_0,
        TRIM(form_1_data.field_1)  AS field_1,
        TRIM(form_1_data.field_87) AS field_2,
        GROUP_CONCAT(DISTINCT CONCAT (
                        extensible_8_data.field_953,
                        '|||',
                        cloud_uploads.NAME
                        ) SEPARATOR '<br />') AS field_3
FROM (SELECT * FROM form_6_data ORDER BY instance_id DESC LIMIT 25) AS records
LEFT JOIN instances
        ON instances.id = records.instance_id
LEFT JOIN extensible_8_data
        ON records.instance_id = extensible_8_data.instance_id
LEFT JOIN cloud_uploads
        ON extensible_8_data.field_953 = cloud_uploads.id
LEFT JOIN form_1_data
        ON records.field_89 = form_1_data.instance_id
WHERE instances.form_id = 6
        AND instances.active = 1
        AND (
                cloud_uploads.active = 1
                OR cloud_uploads.active IS NULL
                )
GROUP BY records.instance_id
ORDER BY records.instance_id

关于mysql - 如何在 MySQL 中正确执行此有限分组查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12783932/

相关文章:

mysql - SQL 删除多个相同外键中的特定行,但其中包含最旧的日期

sql - `sp_executesql` 真的接受 `nvarchar(max)` 参数吗?

mysql - GROUP_CONCAT 但限制获得多于一行

python - PATH_MAX和NAME_MAX有什么关系,如何获取?

android - Android 2.2 每个应用程序的最大内存限制是多少?

mysql - 如果名称已使用,如何获取 INSERT 的 ID,否则生成新的 ID

php - 获取带有类别名称、标签和 WordPress 中所有相关内容的帖子

android - Android 中的循环 ImageView

mysql - 图表与MySql的连接

c++ - Qt 类型的限制在哪里?