mysql - 左连接并显示非外键

标签 mysql sql join left-join

我要加入两个表,UsersAddresses

Users 表有一个名为 userID 的唯一(但不是主)键Addresses 表有一个名为 userID 的主键

我正在尝试左连接 表,这样我就可以从 Users 表中获取所有信息,而不管它是否在 Addresses 表中有匹配项,所以我使用了

select * from users u left join addresses a on a.userID = u.userID

这有效,但它仅在匹配时显示用户 ID。无论是否匹配,如何获取用户 ID?

编辑:下图显示了我当前的查询(左连接)返回的内容:

Test Data

最佳答案

现在很清楚问题出在哪里。

除了返回具有相同别名的多个表达式(列)之外,查询没有任何“错误”。其中一个压倒了另一个。 (不是就返回的结果集而言,所有的列和行都在那里;问题在于您的 PHP 脚本如何处理结果集。如果您通过“关联”(使用列名)引用行中的值, 只有一个列值被引用。

因此,解决该问题的一种方法是限定查询中的列:

SELECT u.userID
     , u.blah
     , a.userID  AS a_userID
     , a.blah    AS a_blah
  FROM users u 
  LEFT
  JOIN addresses a
   ON ...

这样所有的列别名都是唯一的。然后,所有这些列名都将在您的 PHP 中通过“关联”可用。

关于mysql - 左连接并显示非外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17794456/

相关文章:

mysql - 订购复杂的 MySql 查询

sql - 在 MySQL 中存储和查询 xml 数据

arrays - $lookup 两层

mysql - SQL 查询左连接 where 子句

mysql - 如何从 SQL 中的多个列中选择不同的值?

创建计划事件时 MySQL 出错

javascript - 单击“提交”按钮后,我想收到成功警报,然后单击“确定”,我应该重定向到 PHP 的新页面

sql - 如何将多个默认行插入到 PostgresQL 中的表中

sql - 通过linux使用mysqldump导出时将数据库名称添加到sql文件中

mysql - 连接三个表 MySQL -