【发布时间】:2021-10-27 09:38:43
【问题描述】:
当我比较这两个 GROUP_CONTACT 时,我的 sql 请求遇到了一些问题, 结果似乎是相反的。我试图将订单语句放入 group_concat 但没有成功。
如何在没有 DISTINCT 语句的 GROUP_CONCAT 和使用 DISTINCT 语句的 GROUP_CONCAT 之间获得相同的结果。
SELECT GROUP_CONCAT(a.artiste_nom SEPARATOR '|') as 'std', GROUP_CONCAT(DISTINCT a.artiste_nom SEPARATOR '|') as 'std1'
FROM produit p
LEFT JOIN produit_artiste pa ON pa.produit_id = p.produit_id
LEFT JOIN artiste a ON pa.artiste_id = a.artiste_id
WHERE pa.produit_id = p.produit_id
GROUP BY p.produit_id
HAVING std <> std1
使用 GROUP_CONCAT(DISTINCT a.artiste_nom ORDER BY a.artiste_nom ASC SEPARATOR '|') 完全没有区别
GROUP_CONCAT(DISTINCT a.artiste_nom ORDER BY a.artiste_nom DESC SEPARATOR '|') 改变了表格的解析方式。
【问题讨论】:
-
你的语法错误:
-
GROUP_CONCAT(a.artiste_nom ORDER BY column SEPARATOR '|' ) 但它没有用
-
没用 ORDER BY 之后得到的值排序是由使用的排序规则定义的。如果在您看来排序与指定的排序不匹配,那么您将看不到某些东西。例如,有一些符号在视觉上看起来像另一个符号,但在当前排序规则中的优先级较低。您可以使用例如 HEX() 检查您实际看到的内容。尝试在一些在线小提琴上重现您的问题。