DISTINCT 有长度限制吗?
Does DISTINCT have a length limit?
我将图像像 base64 字符串一样存储在我的数据库中。
DB 已规范化,在使用 JOIN 时我使用 DISTINCT 来转义重复项。
问题是我的查询 returns 只有一张图片。
这些字符串的开头相同,可能是元数据或其他内容。
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
GROUP_CONCAT()本身有长度限制
由选项group_concat_max_len配置。默认为 1024 字节。
这与您是否在调用中使用 DISTINCT 无关。
我将图像像 base64 字符串一样存储在我的数据库中。
DB 已规范化,在使用 JOIN 时我使用 DISTINCT 来转义重复项。
问题是我的查询 returns 只有一张图片。
这些字符串的开头相同,可能是元数据或其他内容。
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
GROUP_CONCAT()本身有长度限制
由选项group_concat_max_len配置。默认为 1024 字节。
这与您是否在调用中使用 DISTINCT 无关。