SQL Server是否可以使用PHP从UNION查询返回不同的别名列名?


Is it possible for SQL Server to return different aliased column names from a UNION query using PHP?

我在UNION语句(或UNION ALL)中有几个SELECT查询。由于它是一个UNION,它将返回具有一列的单个数据集(在本例中我只返回一个值),通常是第一个查询中的列名。

我为每个查询中的列添加了别名,因此我可以在PHP脚本中按名称而不是按索引使用数据。

是否可以从每个单独的SELECT中获得单独的列名别名?

,

SELECT name as manager FROM employees WHERE type = 1
UNION
SELECT name as mid_level_manager FROM employees WHERE type = 2
UNION
SELECT name as regular_employee FROM employees WHERE type = 3

我在准备好的语句中使用PDO,像这样,

$results = $prepared_statement->fetchAll(PDO::FETCH_ASSOC);

可能不是最好的例子,但是我如何获得这些别名列名呢?查询本身工作得很好。我使用的是SQL Server 2012.

你不能。UNION将使用第一个查询中的别名列名(我认为可能是最后一个)。这就是联盟的意义所在。

您可以选择多个列并为每个列设置别名,但不能为不同的行设置不同的列别名,这没有意义。

对于单个列只有一个名称,但是您可以添加type列,指示哪个选择返回该行:

SELECT type, name as manager FROM employees WHERE type = 1
UNION
SELECT type, name as mid_level_manager FROM employees WHERE type = 2
UNION
SELECT type, name as regular_employee FROM employees WHERE type = 3