0

我是 SQL 新手。我从两个不同的表中获取结果有一个简单的问题。

我在数据库中有两个表。第一个表有一个带有 id 引用的列,它对应于第二个表中的行。我需要执行什么 SELECT 才能获得结果,以便 id 被第二个表中的所有值替换。为了可视化我正在讨论的表格:

TABLE_USERS
===========
id      username      group
--      --------      -----
1       jim           A
2       alice         A
3       brandon       B

TABLE_GROUPS
============
id      groupname         members
--      ---------         -------
A       designer          134
B       photographer      39

DESIRED_SELECTION
=================
id      username      group
--      --------      -----
1       jim           designer
2       alice         designer
3       brandon       photographer

谢谢!

4

2 回答 2

2

你想要一个加入:

SELECT
    u.id,
    username,
    groupname
FROM
    TABLE_USERS AS u
LEFT JOIN TABLE_GROUPS AS g
    ON u.group = g.id
于 2012-06-14T20:07:16.783 回答
2

实际上,您确实想加入这两个表:

SELECT * FROM
    TABLE_USERS LEFT JOIN TABLE_GROUPS 
    ON TABLE_USERS.group = TABLE_GROUPS.id

连接表的技巧是在两个表中找到必须匹配的值,并使用on告诉 SQL 匹配它们。此表有一个 ID 列可让您执行此操作 = 您将加入表,ON然后列出需要相等的值。

如果您不想要两个表中的所有列,您可以只列出最终查询中需要的列。这意味着Select *您列出了您想要的列,而不是 。如下所示,如果两个表中出现同名的列,则需要在表名前面加上,以便 SQL 知道您想要哪个值。

SELECT TABLE_USERS.ID, Username, Groupname 
  FROM TABLE_USERS 
     LEFT JOIN TABLE_GROUPS 
     ON TABLE_USERS.group = TABLE_GROUPS.id
于 2012-06-14T20:20:00.900 回答