微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在GROUP_CONCAT的查询中忽略了sql – LIMIT

我需要从第二个表中选择一些行,并以逗号分隔的字符串连接.查询功能很好,除了一个问题 – 它总是选择所有行并忽略LIMIT.

这是我的查询的一部分,它获取该字符串并忽略LIMIT:

select 
    group_concat(value order by `order` asc SEParaTOR ',') 
from slud_data 
    left join slud_types on slud_types.type_id=slud_data.type_id 
where slud_data.product_id=18 and value!='' and display=0 limit 3;


// Result:
+---------------------------------------------------------+
| group_concat(value order by `order` asc SEParaTOR ',') |
+---------------------------------------------------------+
| GA-XXXX,Bentley,CONTINENTAL FLYING SPUR,2006         |
+---------------------------------------------------------+

// Expected result: (only 3 comma-separated records,not 4)

完整查询

SELECT *,product_id id,(select group_concat(value order by `order` asc SEParaTOR ',') from slud_data left join slud_types on slud_types.type_id=slud_data.type_id where slud_data.product_id=t1.product_id and value!='' and display=0 limit 3) text
FROM slud_products t1 
WHERE 
    Now() < DATE_ADD(date,INTERVAL +ttl DAY) and activated=1
ORDER BY t1.date desc

解决方法

LIMIT子句限制最终结果集中的行数,而不是用于在GROUP_CONCAT中构造字符串的行数.由于您的查询只返回最终结果中的一行,所以LIMIT不起作用.

您可以通过使用LIMIT 3构建子查询解决您的问题,然后在外部查询中将GROUP_CONCAT应用于该子查询的结果.

原文地址:https://www.jb51.cc/mssql/75517.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐