SQL 语句到 select 来自 2 个不同的表,来自两个不同的数据库(同一服务器)
SQL statement to select from 2 different tables, from two different databases (same server)
如何 select 从同一服务器上不同数据库中的多个表中获取?
另外,有没有办法有一个识别标记,这样我就可以看到结果的来源?
例如:
SELECT db1.table1.name, db2.table2.name, fromTbl
FROM db1.table1, db2.table2
WHERE db1.table1.name LIKE '%j%' OR db2.table2.name LIKE '%j%'
所以在这种情况下,我 select 从 2 个不同的数据库和表中获取名称。我正在对这些名称进行通配符搜索,fromTbl 会告诉我结果的来源吗?
4 john smith 4 555.555.5555 table1
17 joe schmoe 17 555.555.5555 table2
11 james doe 11 555.555.5555 table1
我正在使用 SQL Server 2005。
加入工会似乎是您最好的选择。联合将合并两个查询的结果。
select name, 'table1' as fromTbl
from db1.schema.table1
where name like '%j%'
union --or union all depending on what you want
select name, 'table2' as fromTbl
from db2.schema.table2
where name like '%j%'
您可以使用 UNION ALL 并添加数据库名称,例如:
SELECT [columns_list], 'db1.schema.table1.name' AS [fromTbl]
FROM db1.schema.table1
WHERE db1.schema.table1.name LIKE '%j%'
UNION ALL
SELECT [columns_list], 'db2.schema.table2.name' AS [fromTbl]
FROM db2.schema.table2
WHERE db2.schema.table2.name LIKE '%j%'
这仅在表中的列具有相同的列类型(如您的示例所示)时才有效,否则 UNION 将无效。
试试这个:
SELECT * FROM OPENROWSET('SQLNCLI', 'Server=YOUR SERVER;Trusted_Connection=yes;','SELECT * FROM Table1') 作为一个
联盟
SELECT * FROM OPENROWSET('SQLNCLI', 'Server=ANOTHER SERVER;Trusted_Connection=yes;','SELECT * FROM Table1') 作为
如何 select 从同一服务器上不同数据库中的多个表中获取?
另外,有没有办法有一个识别标记,这样我就可以看到结果的来源?
例如:
SELECT db1.table1.name, db2.table2.name, fromTbl
FROM db1.table1, db2.table2
WHERE db1.table1.name LIKE '%j%' OR db2.table2.name LIKE '%j%'
所以在这种情况下,我 select 从 2 个不同的数据库和表中获取名称。我正在对这些名称进行通配符搜索,fromTbl 会告诉我结果的来源吗?
4 john smith 4 555.555.5555 table1
17 joe schmoe 17 555.555.5555 table2
11 james doe 11 555.555.5555 table1
我正在使用 SQL Server 2005。
加入工会似乎是您最好的选择。联合将合并两个查询的结果。
select name, 'table1' as fromTbl
from db1.schema.table1
where name like '%j%'
union --or union all depending on what you want
select name, 'table2' as fromTbl
from db2.schema.table2
where name like '%j%'
您可以使用 UNION ALL 并添加数据库名称,例如:
SELECT [columns_list], 'db1.schema.table1.name' AS [fromTbl]
FROM db1.schema.table1
WHERE db1.schema.table1.name LIKE '%j%'
UNION ALL
SELECT [columns_list], 'db2.schema.table2.name' AS [fromTbl]
FROM db2.schema.table2
WHERE db2.schema.table2.name LIKE '%j%'
这仅在表中的列具有相同的列类型(如您的示例所示)时才有效,否则 UNION 将无效。
试试这个: SELECT * FROM OPENROWSET('SQLNCLI', 'Server=YOUR SERVER;Trusted_Connection=yes;','SELECT * FROM Table1') 作为一个 联盟 SELECT * FROM OPENROWSET('SQLNCLI', 'Server=ANOTHER SERVER;Trusted_Connection=yes;','SELECT * FROM Table1') 作为