DISTINCT 有长度限制吗?

时间:2021-01-08 21:14:05

标签: mysql distinct

我将图像像 base64 字符串一样存储在我的数据库中。

DB 已规范化,并且在使用 JOIN 的情况下,我使用 DISTINCT 来转义重复项。

问题是我的查询只返回一张图片。

这些字符串一开始都是一样的,可能是元数据或者别的什么。

DISTINCT 有长度限制吗?

会不会是 DISTINCT 将这些字符串截断到最大长度,比较它们并确定它们是相同的?

编辑

我对图像列使用 TEXT 数据类型。字符串大约有 4000 个字符长,所以我认为这就足够了。

查询是

SELECT goods.id, goods.title, goods.description, goods.image, goods.price, goods.title, 
GROUP_CONCAT(DISTINCT ingredients.title) AS ingredients_title, 
GROUP_CONCAT(DISTINCT ingredients.description) AS ingredients_description, 
GROUP_CONCAT(DISTINCT ingredients.image) AS ingredients_image, 
GROUP_CONCAT(DISTINCT composition.title) AS composition_title, 
GROUP_CONCAT(DISTINCT goods_composition.value) AS goods_compositionvalue FROM goods 
INNER JOIN goods_ingredients ON goods_ingredients.good_id = goods.id 
INNER JOIN ingredients ON goods_ingredients.ingredient_id = ingredients.id 
INNER JOIN goods_composition ON goods_composition.good_id = goods.id 
INNER JOIN composition ON goods_composition.composition_id = composition.id 
WHERE goods.id = :goods_id

1 个答案:

答案 0 :(得分:1)

GROUP_CONCAT() 本身有长度限制。

它由选项 group_concat_max_len 配置。默认为 1024 字节。

这与您是否在调用中使用 DISTINCT 无关。

相关问题