查询一个表中所有数据并关联查询该表ID对应另一个表数据。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了查询一个表中所有数据并关联查询该表ID对应另一个表数据。相关的知识,希望对你有一定的参考价值。

要查出一个A表中所有数据,并关联查询该表中accid账号对应的其他表B的数据,但另一个表数据可以为空。结果集中必须有全部A表信息,B表中信息可以为空。

在SqlServer中可以这样来查询:
select A.*,B* from A left join B on A.accid=B.accid

在Oracle中可以这样来查询:
select A.*,B* from A left join B on A.accid=B.accid

select A.*,B* from A,B where A.accid=B.accid(+)

mysql中和SqlServer类似,就不多说了,还有其他的数据库也不一一做说明了

以上,希望对你有所帮助!
参考技术A select A.*,B*
from A
left join B
on A.accid=B.accid;
要用左外连接
参考技术B select A.* from A as a inner join B as b on a.accid=b.accid where 要查询的字段

MySQL查询 - 一个表中的单行,另一个表中的多行

【中文标题】MySQL查询 - 一个表中的单行,另一个表中的多行【英文标题】:MySQL query - single row in one table with multiple rows in another table 【发布时间】:2014-11-08 07:27:14 【问题描述】:

我有以下数据模型

Table: User
USER ID
USER NAME

Table: Group
GROUP ID
GROUP NAME

Table: User Group
GROUP ID
USER ID

我正在尝试显示一个包含所有组名和关联用户的屏幕 - 前端是 PHP

我的查询如下 -

`SELECT a.group_id,
        a.group_name,
        GROUP_CONCAT(g.user_id) AS user_ids,
        GROUP_CONCAT(u.user_fname) AS user_names
 FROM   group a, user_group g, user u
 WHERE  a.group_id = g.group_id
 AND    g.user_id = u.user_id
 GROUP BY a.group_id`

我的问题:正如您从上面的查询中看到的那样 - 我必须有两个表示用户 ID 和用户名的串联字符串列表。这在 PHP 中变得很头疼,因为我必须这样做 1. 将两个连接的字符串分解成数组 2. 循环遍历两个数组并从中构造用户对象 3.然后将对象数组传递过来

有没有更有效/更好的方法来做到这一点?任何建议,指针将不胜感激。

【问题讨论】:

【参考方案1】:

您只需要一份清单吗?

SELECT g.group_id, g.group_name,
       GROUP_CONCAT(g.user_id, ':', u.user_fname) AS names_and_ids
FROM group g join
     user_group ug
     on g.group_id = ug.group_id join
     user u
     on ug.user_id = u.user_id
GROUP BY g.group_id, g.group_name;

注意以下变化:

我添加了一个group by,这样您就可以得到每组一行。 我将别名更改为表名的缩写,这样查询更容易阅读。 我修改了group_concat() 以在一个列表中同时包含用户 ID 和用户名。 我将join 更改为使用显式join 语法,而不是where 子句中的隐式连接。

【讨论】:

谢谢 - 是的,我有一个 group by 子句,我只是错过了输入。如果我按照您的建议进行操作,我将不得不在 PHP 中拆分所有连接的用户 ID 和名称。我希望有某种方法可以从 MySQL 中返回关联的数组。也许我只是希望太多 - 如果我没有看到任何更好的回应,我会接受你的 有一个叫做mysqli_fetch_assoc()的东西。也许这就是你想要的。

以上是关于查询一个表中所有数据并关联查询该表ID对应另一个表数据。的主要内容,如果未能解决你的问题,请参考以下文章

sql中有关联的两个表,怎么查出一个表中没有对应到另一个表的数据?

一张表中的ID对应另一张表中的两个字段怎么查询

sql 多表关联查询

关于oracle中 根据一个表的主键数据同步更新另一个关联表的字段。

mysql查询语句如何通过一个表查询出的数据对另一个表中的查询数据进行数据剔除

两个表,一个表中的两列关联另一个表的id,如何将这个表中的两列显示为另一个表id对应的内容