mysql - 有任何 SQL GROUP_CONCAT 替代函数吗?

标签 mysql sql function group-by

这里我已经完成了我的sql查询。 有人知道 GROUP_CONCAT 替代函数所以让我知道吗?

SQL 错误:

<h1>A Database Error Occurred</h1>
<p>Error Number: 1140</p>
<p>In aggregated query without GROUP BY, expression #1 of SELECT list contains nonaggregated column 'smartsaver.ud.id'; this is incompatible with sql_mode=only_full_group_by</p>

SQL命令:

    SELECT ud.id, ud.url, d.document_name, d.d
                                        GROUP_CONCAT(LEFT(REPLACE(url, "document", "thumb"), CHAR_LENGTH(REPLACE(url, "document", "thumb")) - LOCATE(".", REVERSE(REPLACE(url, "document", "thumb")))), ".", "png")
ud.document_url
                                END as new_url, CASE WHEN ud.type = 1 THEN "Image" WHEN ud.type = 2 THEN "Video" WHEN ud.type = 3 THEN "File" WHEN ud.type = 4 THEN "Text" ELSE "" END as type, d.added_on, ud.type as document_type
    FROM tbl_uplaod_document ud
    JOIN tbl_document d ON d.id = ud.document_id
    LEFT OUTER JOIN tbl_document_project_relation pr 
 ON pr.document_id = ud.document_id

    WHERE ud.is_active = 1
    AND d.is_active = 1
    AND ud.user_id = 1
    AND ud.document_id = 116
     LIMIT 10

最佳答案

@dev5 你的代码难以阅读

SELECT 列表的表达式 #1 不在 GROUP BY 子句中,并且包含非聚合列“smartsaver.ud.id”,该列在功能上不依赖于 GROUP BY 子句中的列;这与 sql_mode=only_full_group_by 不兼容。

通过以下命令更改 MySQL 中的 sql 模式即可简单解决:

SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

谢谢你:-)

关于mysql - 有任何 SQL GROUP_CONCAT 替代函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57336050/

相关文章:

mysql - RDS - 1205 锁定等待超时超出尝试重新启动事务

c# - 使用 .NET 连接到 AS400

MySQL使用一张表的参数从多个表中选择数据

c++ - 如何在 C++ 中生成打印 char [ ] 数组的函数?

c++ - 通过更改推导的模板值自组合函数

mysql - SQL查询改进(表中的额外列)

java - 多次插入加速

jQuery - 如果值与数组中的元素匹配,则禁用复选框

sql - 在同一 SQL 查询中匹配多个值

c++ - 函数指针作为参数