我已经搜索了这个,但我可能使用了错误的术语。
以下查询
SELECT t1.name, t2.entry FROM t1
INNER JOIN t2 ON t2.ID = t1.ID
WHERE t2.meta_key IN ('wp_x1','wp_x2');
返回类似于下面的数据,其中每个meta_key
字段有<2个记录
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数据库。
答案 0 :(得分:1)
尝试按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
答案 1 :(得分:1)
在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。