在select wildcard sql的列中包含表名

时间:2013-05-22 09:09:54

标签: sql database

如果我使用通配符从表中选择所有列,是否可以在返回的列中包含表名?

进一步解释。假设我想要连接两个表,并且两个表都有列名“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的解决方案,但其他数据库也可以作为参考。

谢谢!

3 个答案:

答案 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]