【发布时间】:2015-03-22 18:57:18
【问题描述】:
我有两个表:items 和 item_params。 Items 表是通常的项目列表,item_params 是有多个参数名称及其值的表。
+-----------------------------------------+
| id | item_id | param_name | param_value |
+-----------------------------------------+
| 1 | 1 | Width | 80 cm |
| 2 | 1 | Length | 80 cm |
| 3 | 1 | Height | 110 cm |
+-----------------------------------------+
我需要一个请求,所以我的查询如下所示:
SELECT i.*,
GROUP_CONCAT(DISTINCT ip.param_name SEPARATOR '|') AS param_names,
GROUP_CONCAT(DISTINCT ip.param_value SEPARATOR '|') AS param_values
FROM items i
LEFT JOIN item_params ip ON ip.item_id = i.item_id
WHERE i.item_id = 1
LIMIT 1
为避免重复值,我使用 DISTINCT,但如果 param_value 对不同的 param_name 具有相同的值,则它仅返回 80 cm|110 cm.
我怎样才能获得唯一的 param_name 及其所有 param_value 而不管相同的值?
【问题讨论】:
-
这是
LEFT JOIN...ON...,而不是WHERE -
@axiac 我知道,我的错。这只是示例...
标签: mysql distinct group-concat