如果我使用通配符从表中选择所有列,是否可以在返回的列中包含表名?
进一步解释。假设我想要连接两个表,并且两个表都有列名“name”和许多其他列。我想使用通配符来选择所有列,而不是在select中明确指定每个列名。
Select *
From
TableA a,
TableB b
Where
a.id = b.id
我可以编写一个sql来将一个列名称作为“a.name”(或TableA.name)返回,而将一个列作为“b.name”(或TableB.name)返回,而不是看到两个具有相同名称“name”的列。 )没有明确地将列名放在select中?
我更喜欢mssql的解决方案,但其他数据库也可以作为参考。
谢谢!
答案 0 :(得分:1)
您可以使用select a.*, ' ', b.* from T1 a, T2 b
使其更加明显,其中T1结束的列和T2的列开始。
答案 1 :(得分:1)
您基本上是在ID字段上连接两个表,因此您只会看到一个标有“ID”的列,而不是两个,因为您要求只查看表a和表b中ID相同的那些记录:他们有相同的身份。
答案 2 :(得分:0)
尝试...
SELECT 'TableA' AS 'Table', A.* FROM TableA A
WHERE A.id IN (SELECT id FROM TableB)
UNION
SELECT 'TableB' AS 'Table', B.* FROM TableB B
WHERE B.id IN (SELECT id FROM TableA)
ORDER BY id, [Table]