You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用LIKE语句连接两张表的SQL查询问题咨询

解决使用LIKE关联两张表的计数查询问题

嘿,我看你是想通过comment_location字段里包含产品ID的关联逻辑,统计每个对应位置的评论数量对吧?你的当前查询有几个小问题,我帮你调整一下:

首先说下原查询的问题:

  • 你用的(select '%'+produit.id+'%')写法不对,在MySQL里字符串拼接得用CONCAT函数,而且完全没必要套子查询,直接在JOIN的关联条件里处理就好
  • 另外你的GROUP BY只写了comment_location,但SELECT里还包含produit.nom,这在开启严格SQL模式的数据库里会报错,逻辑上也可能出现分组混乱的情况

给你修正后的查询语句:

SELECT COUNT(c.comment_id) AS nb, p.nom
FROM comments c
INNER JOIN produit p ON c.comment_location LIKE CONCAT('%', p.id, '%')
GROUP BY p.nom, c.comment_location;

简单解释下:

  • 给表加了c(comments)和p(produit)的别名,让语句更清爽
  • 用CONCAT('%', p.id, '%')正确生成模糊匹配的字符串,完美适配MySQL的语法(要是你用的是SQL Server,换成'%' + p.id + '%'就行)
  • GROUP BY同时包含了p.nom和c.comment_location,既符合SQL规范,也保证分组逻辑的准确性

另外提个小建议:如果comment_location里存的是多个产品ID用分隔符(比如逗号)凑在一起的内容,这种设计其实不太合理。最好是建一个中间关联表(比如叫comments_produit),专门存评论和产品的多对多关系,这样查询效率会高很多,还能避免模糊匹配带来的误判(比如ID是12和123会被同时匹配到的情况)

内容的提问来源于stack exchange,提问作者New_ToQT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:33:35