MySql单个查询,两个表相同的字段名称

MySql单个查询,两个表相同的字段名称

问题描述:

我有两个数据库表一个叫做客户端,另一个是用户。我试图从两个表中选择单个字段“email”。请注意,该电子邮件字段位于两个表中。MySql单个查询,两个表相同的字段名称

表客户包含10条记录,而用户有5个记录。

下面的查询工作,但由于某些原因的记录是重复的,这样反而让15条记录总,我结束了50好像从一个表中的记录是通过从其他表中的记录成倍增加。

SELECT 
    clients.email, 
    users.email 
FROM 
    clients, 
    users; 

任何帮助,将不胜感激。

+0

你需要一个连接或where子句。查看http://en.wikipedia.org/wiki/Join_%28SQL%29 – j08691 2014-12-19 03:33:14

+0

由于您没有应用任何条件或连接,查询必然会返回来自两个表的所有电子邮件字段。 – Aditya 2014-12-19 03:33:25

+0

我想从两个表中返回电子邮件字段。这是完整的一点,但不是15个结果,我得到50.每个记录重复x10 – user3176519 2014-12-19 03:49:05

尝试重命名字段

对于客户表

clients_email 

对于用户表

users_email 

然后查询作为

SELECT clients.clients_email, users.users_email FROM clients, users WHERE clients.clients_email = users.users_email; 

希望它可以帮助

+0

为什么需要重命名? – 2014-12-19 03:37:58

+0

我从来没有说过这是必需的。我说,尝试重命名......这意味着,如果他愿意,他可以做到这一点......这不是必须的 – 2014-12-19 03:39:14

查询返回cartesian product

您可以简单地使用union all

select email from clients 
union all 
select email from users 
+0

我收到“常规错误:1271归类为经营非法搭配'UNION'“ – user3176519 2014-12-19 03:46:08

+0

看起来你在表和列上都有不同的排序规则。更改它们的排序规则并使它们相同。 http://stackoverflow.com/questions/1294117/how-to-change-collat​​ion-of-database-table-column http://stackoverflow.com/questions/742205/mysql-alter-table-collat​​ion – 2014-12-19 03:57:30

你得到50行,因为CROSS JOIN是发生在那里,去内连接或左连接或右连接,按您的选择,最好是内连接... 采取一些共同的属性,如ID或类似的东西...

select clients.email, users.email from clients,users where clients.id=users.id...