我正在尝试组合两个(可能更多)表,这些表具有不同的列名,但在我尝试排列的列中具有相同的数据。例如,我有一个名为 dbo.member 的表,该表中有一个名为 UID 的列。在另一个名为 dbo.tasklist_data 的表上,有一个名为 TaskID 的列,其中包含一些与 UID 相同的数据。我正在寻找的是将两个表与结果结合起来,结果只给我成员表上的 UID,它与 tasklist_data 表上 TaskID 列中的数据相匹配。
我确实希望我解释得足够好。请耐心等待,因为我是新手,但渴望学习。任何帮助或建议将不胜感激。谢谢你。
从高层次来看,您只需执行以下操作:
SELECT *
FROM dbo.member m
INNER JOIN dbo.tasklist_data tld ON m.UID = tld.TaskID;
Run Code Online (Sandbox Code Playgroud)
所述INNER JOIN将采取的行从dbo.member其中UID列值相匹配包含在值TaskID从柱tasklist_data表。如果您想要来自 的所有行dbo.member,并且只需要来自 的匹配行dbo.tasklist_data,您可以将其重写为:
SELECT *
FROM dbo.member m
LEFT JOIN dbo.tasklist_data tld ON m.UID = tld.TaskID;
Run Code Online (Sandbox Code Playgroud)
Steve Stedman 有一个很好的资源来理解不同类型的JOIN语句是如何工作的。
如果您需要在两个以上的表上执行此操作,只需JOIN根据需要添加子句:
SELECT *
FROM dbo.member m
INNER JOIN dbo.tasklist_data tld ON m.UID = tld.TaskID
INNER JOIN dbo.some_other_table sot ON m.UID = sot.some_column_name;
Run Code Online (Sandbox Code Playgroud)
通过使用从查询子句中提到的所有表中SELECT *返回所有列,我打破了上述(可以说是)主要的罪过。明确指定所需的列通常被认为是一种很好的做法,例如:FROM
SELECT m.UID
, m.SomeColumn1
, m.SomeColumn2
, tld.TaskID
, tld.SomeColumn3
FROM dbo.member m
INNER JOIN dbo.tasklist_data tld ON m.UID = tld.TaskID;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24995 次 |
| 最近记录: |