【发布时间】:2020-12-28 04:07:36
【问题描述】:
我有以下选择查询。当存在“ES”行时,我想避免获得重复的“EN”行。喜欢 ES 而不是 EN。
SELECT s.soft_id,s.groupby,s.packageid,s.name,s.area,l.min,GROUP_CONCAT(DISTINCT JSON_ARRAY(s.version,s.detailid,s.filesize,s.updatetime)) versions
FROM software s
INNER JOIN langs l ON s.lang_id=l.lang_id
INNER JOIN devices_type t ON (s.familylock_id=t.familylock_id OR (s.familylock_id=0 AND s.devicelock_id=t.device_type_id))
INNER JOIN devices d ON t.device_type_id=d.device_type_id
INNER JOIN users u ON d.user_id=u.user_id
WHERE s.groupby IN(1,2,3)
AND u.token="abc"
AND d.serialno="123456789"
AND l.min IN("ES","EN")
GROUP BY s.soft_id,s.groupby,s.packageid,s.name,s.area,l.min ORDER BY s.name ASC
这是示例结果。我想摆脱 AUDI 和 AUTOSEARCH "EN" 行。
【问题讨论】:
-
您通常 GROUP BY 与您选择的列相同,但那些作为设置函数的参数的列除外。
-
没错!试一试,看看你是否得到了预期的结果。
-
您误用了 MySQL 臭名昭著的非标准扩展 GROUP BY。请阅读这个。 dev.mysql.com/doc/refman/8.0/en/group-by-handling.html
标签: mysql sql arrays join select