SQL查询在字段而不是新记录中的数据
问题描述:
我已经搜索了这个,但我可能使用了错误的术语。SQL查询在字段而不是新记录中的数据
下面的查询
SELECT t1.name, t2.entry FROM t1
INNER JOIN t2 ON t2.ID = t1.ID
WHERE t2.meta_key IN ('wp_x1','wp_x2');
返回类似如下数据,其中有2个记录每个meta_key
领域
name1,wp_x1_entry
name1,wp_x2_entry
name2,wp_x1_entry
name2,wp_x2_entry
如何修改查询,而不是返回这个的?
name1,wp_x1_entry,wp_x2_entry
name2,wp_x1_entry,wp_x2_entry
表/字段名称已更改为隐藏敏感信息。另外,我知道这些设计很糟糕,但我无法更改数据库结构。
这将从C#代码调用mySql数据库。
答
加入另一时间T2,寻找wp_x2仅
SELECT t1.name, t2.entry, t3.entry
FROM t1
JOIN t2 ON t2.ID = t1.ID and t2.meta_key = 'wp_x1'
JOIN t2 as t3 ON t3.ID = t1.ID and t3.meta_key = 'wp_x2'
将返回两个wp_x1和wp_x2只有行。如果需要/不需要,请使用LEFT_JOIN。
答
尝试通过t1.name和group_concat t2.entry进行分组。
这样的:
SELECT t1.name, GROUP_CONCAT(t2.entry) FROM t1
INNER JOIN t2 ON t2.ID = t1.ID
WHERE t2.meta_key IN ('wp_x1','wp_x2')
GROUP BY t1.name;
http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html
您需要使用'group_concat'。 – 2015-02-24 15:07:19