2014-02-10 62 views
0

A有两个表。其中一个是注册人,另一个是自定义字段,他们通过id连接。MySql中的SQL查询重复消除

例如

表1

id name email 
1 John [email protected] 

表2

field id registrant id value 
1   1    Yes 
2   1    Have dog 

我想连接这些表,并使用该查询

SELECT `jos_eb_registrants`. * , `jos_eb_field_values`. * 
FROM jos_eb_registrants, jos_eb_field_values 
WHERE `jos_eb_registrants`.`event_id` =3 
AND `jos_eb_registrants`.`id` = `jos_eb_field_values`.`registrant_id` 

并得到这样的结果

John [email protected] Yes 
John [email protected] Have dog 

我想这一点 - 在CSV

John [email protected] Yes Have dog 

和独立collumns;

+1

你在使用什么数据库引擎? –

+0

Mysql phpmyadmin – RokasKs

+0

对于Table1中的每一行,Table2中有多少匹配的行可以存在? – shahkalpesh

回答

3

回答你的问题是功能group_concat()

SELECT r.name, r.email, 
     group_concat(`value` separator ' ') as `values` 
FROM jos_eb_registrants r join 
    jos_eb_field_values v 
    on v.`id` = v.`registrant_id` 
WHERE r.`event_id` =3 
group by r.name, r.email ; 

此查询还引入了表的别名,使查询更具可读性。它使用适当的ANSI join语法,并添加了明确的group by(即使您的示例仅返回一行)。

+0

什么意思r和v。而且我希望从这两个表的所有信息,不仅电子邮件和名称,但没有duoble名称。 – RokasKs

+1

@RokasKs。 。 。 'r'和'v'是表别名,表格引用较短。如果你有一些其他的输出,然后问另一个问题。这个答案似乎回答了你发布的查询。 –

+0

A有表jos_eb_registrants和jos_eb_field_values,而不是r和v。 – RokasKs