4

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

进一步解释它。假设我想连接两个表,并且两个表都有列名“name”和许多其他列。我想使用通配符来选择所有列,而不是在选择中明确指定每个列名。

Select *
From 
TableA a,
TableB b
Where 
a.id = b.id

我可以编写一个 sql 以将一个列名返回为“a.name”(或 TableA.name),一个作为“b.name”(或 TableB.name)返回,而不是看到两个具有相同名称“name”的列将列名放在选择中?

我更喜欢 mssql 的解决方案,但其他数据库也可以作为参考。

谢谢!

4

3 回答 3

2

您可以使用select a.*, ' ', b.* from T1 a, T2 b 它使 T1 中的列结束和 T2 中的列开始的位置更加明显。

于 2013-05-23T11:22:56.737 回答
1

您基本上是在 ID 字段上连接两个表,因此您只会看到一个标有“ID”的列,而不是两个,因为您要求只查看表 a 和表 b 中 ID 相同的那些记录:它们共享同一个身份证。

于 2014-08-21T20:32:37.113 回答
-1

尝试 ...

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]
于 2020-06-10T13:27:27.607 回答