【发布时间】:2015-07-29 15:57:59
【问题描述】:
我在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 和 Prepared Statements,就像这样,
$results = $prepared_statement->fetchAll(PDO::FETCH_ASSOC);
也许不是最好的例子,但我怎样才能得到那些别名列名?查询本身可以正常工作。我正在使用 SQL Server 2012。
【问题讨论】:
-
联合查询的结果集将只有一列。该列将从 UNION 中的第一个查询中获得其名称。由于您只有一列,因此您只能命名一列。如果您想要更多列,则必须调整查询以反映这一点。
-
@JNevill 我希望有一种我不知道的方法来克服本机功能。我想这没有意义。
-
同意@JNevill - 我真的不明白你为什么要按照你的要求去做。为什么不只运行 3 个单独的查询 - 无论如何你都在这样做,使用 UNION。
-
您的查询有效地执行了
SELECT DISTINCT name AS manager FROM employees WHERE type IN (1,2,3)。我怀疑您想要的不是 UNION 查询。你真正想达到什么目标?
标签: php sql sql-server pdo union