首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >左连接并显示非外键

左连接并显示非外键
EN

Stack Overflow用户
提问于 2013-07-23 02:10:36
回答 2查看 50关注 0票数 1

我有两个表要加入,UsersAddresses

Users表有一个unique (but not primary) key called userIDAddresses表有一个primary key called userID

我尝试对表执行left-join操作,以便从Users表中获取所有信息,而不管它在Addresses表中是否匹配,所以我使用了

代码语言:javascript
复制
select * from users u left join addresses a on a.userID = u.userID

这是可行的,但它只在有匹配的情况下才显示userID。无论是否匹配,如何获取userID?

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-23 02:39:46

除了返回具有相同别名的多个表达式(列)之外,该查询没有任何“错误”。它们中的一个凌驾于另一个之上。(不是返回结果集,所有的列和行都在那里;问题出在PHP脚本处理结果集的方式上。如果通过“关联”(使用列名)引用行中的值,则只会引用其中一个列值。

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

代码语言:javascript
复制
SELECT u.userID
     , u.blah
     , a.userID  AS a_userID
     , a.blah    AS a_blah
  FROM users u 
  LEFT
  JOIN addresses a
   ON ...

然后,所有这些列名都将在PHP中通过“关联”可用。

票数 1
EN

Stack Overflow用户

发布于 2013-07-23 02:30:31

使用您提供的查询应该会在u.userID列中给出一个结果,而不管它是否有对应的地址。a.userID列将只包含与地址联接的行中的数据。

您可以更改为:

代码语言:javascript
复制
select u.*, a.address from users u left join addresses a on a.userID = u.userID

其将仅选择address的相关部分并保留整个u

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17794456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档