1

我有一个 WebSQL 数据库,其中包含三个表,它们都包含 id 和 PREFIX_name 字段。我需要获取单个 ID 的所有名称字段。

目前我正在尝试以下条款:

SELECT A_name FROM TableA WHERE companyId = 1 UNION ALL
SELECT B_name FROM TableB WHERE companyId = 1 UNION ALL
SELECT C_name FROM TableC WHERE companyId = 1

这将按预期返回结果对象,但字段名称错误:

[{
  "A_name" : "result from TableA",
 },
  "A_name" : "result from TableB",
 },
  "A_name" : "result from TableC"
}];

如您所见,我无法确定来自哪个表字段。

4

1 回答 1

3

当您UNION一起得出结果时,该列将采用第一个查询中给它的名称(在这种情况下A_name

尝试将您的表连接在一起,而不是使用UNION ALL

SELECT A.A_name, B.B_name, C.C_name
FROM TableA A
    INNER JOIN TableB B ON A.companyId = B.companyId
    INNER JOIN TableC C ON A.companyId = C.companyId
WHERE A.companyId = 1

这将为您提供单行的结果。如果您真的希望将结果作为单独的行,您可以选择表名以及 *_name 字段:

SELECT 'TableA' AS TableName, A_name FROM TableA WHERE companyId = 1 UNION ALL
SELECT 'TableB', B_name FROM TableB WHERE companyId = 1 UNION ALL
SELECT 'TableC', C_name FROM TableC WHERE companyId = 1
于 2012-08-15T12:30:53.167 回答