sql - 从 3 个表中选择 2 列

标签 sql sql-server-2005

我有 3 张 table :

Table t1:     Table t2:     Table t3:     
+----+----+   +----+----+   +----+----+   
| i1 | i2 |   | i2 | c2 |   | i1 | c1 |   
+----+----+   +----+----+   +----+----+   
|  1 | 22 |   |  11| cc |   |  1 | e  |   
|  2 | 33 |   |  22| bb |   |  2 | f  |   
|  3 | 11 |   |  33| aa |   |  3 | g  |   
+----+----+   +----+----+   +----+----+   

我想使用带有 i1 和 i2 列的表 t1 从 t2 中选择列 c2,从 t3 中选择 c1 列,结果会很薄:

requested Tabel:     
+----+----+   
| c1 | c2 |   
+----+----+   
|  e | bb |   
|  f | aa |   
|  g | cc |   
+----+----+   

我用这样的联合进行了选择:

select pve.c1
from dbo.t3 as pve
join dbo.t1 as v
on pve.i1 = v.i1
union
select vse.c2
from dbo.t2 as vse
join dbo.t1 as e
on vse.i2 = e.i2

结果是这样的:

resulted Tabel:     
+----+
| i1 |
+----+
|  e |
|  f |
|  g |
|  bb|
|  aa|
|  cc|
+----+

谢谢!

最佳答案

试试这个,

SELECT  c.c1, b.c2
FROM    t1 a
            INNER JOIN t2 b
                on a.i2 = b.i2
            INNER JOIN t3 c
                on a.i1 = c.i1

SQLFiddle Demo

关于sql - 从 3 个表中选择 2 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12051111/

相关文章:

sql - 批量插入期间会出现其他字符

sql - 我可以向分区添加唯一约束吗?

Mysql 查询根据子字符串 left() 和列 max() 值查找行

sql - 存储过程超时..删除,然后创建,然后又恢复了?

mysql - 如何通过SSH一次导入多个数据库?

mysql - 在 MySQL 中使用 Group by 和 Order by

sql - ALTER COLUMN 的执行时间

c# - 如果有文件路径,如何将文件保存在SQL Server数据库中?

sql - 选择前 1000 个,但知道有多少行?

sql - 将 SQL Server 2005 置于单用户模式需要什么 SQL?