【问题标题】:MySql single query, two tables same field nameMySql单查询,两表同名
【发布时间】:2015-02-17 23:49:20
【问题描述】:

我有两个数据库表,一个称为客户端,另一个称为用户。我正在尝试从两个表中选择单个字段“电子邮件”。请注意,该电子邮件字段在两个表中。

Table clients 包含 10 条记录,而 users 有 5 条记录。

下面的查询有效,但由于某种原因记录是重复的,所以我最终得到了 50 条记录,而不是总共 15 条记录。似乎一个表中的记录乘以另一表中的记录。

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

任何帮助将不胜感激。

【问题讨论】:

  • 您需要一个联接或 where 子句。查看en.wikipedia.org/wiki/Join_%28SQL%29
  • 由于您没有应用任何条件或联接,因此查询必然会返回两个表中的所有电子邮件字段。
  • 我想从两个表中返回电子邮件字段。这就是重点,但不是 15 个结果,而是 50 个。每条记录重复 x10

标签: php mysql


【解决方案1】:

您的查询返回 cartesian product

您可以简单地使用union all

select email from clients
union all
select email from users

【讨论】:

【解决方案2】:

您将获得 50 行,因为那里正在发生交叉连接,请根据您的选择进行内连接或左连接或右连接,最好是内连接... 采取一些共同的属性,如 id 或其他东西......

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

【讨论】:

    【解决方案3】:

    尝试重命名字段

    对于客户表

    clients_email
    

    对于用户表

    users_email
    

    然后查询为

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

    希望对你有帮助

    【讨论】:

    • 为什么需要重命名?
    • 我从来没有说过它是必需的..我说尝试重命名......这意味着如果他愿意,他可以这样做......这不是必须的
    猜你喜欢
    • 1970-01-01
    • 2018-05-01
    • 1970-01-01
    • 2015-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多