0

我的 sql 查询是

SELECT id, content FROM table1
UNION ALL
SELECT p_id, p_content FROM table2;

它给出了理想的结果,但具有第一个选择语句的列名。

例如

如果查询从第二个选择语句中获取数据,则结果为

array (size=2)
  'id' => string '15' (length=2)
  'content' => string 'table2 content' (length=22)

我想要带有相应选择语句结果的列名。

例如

如果选择从第一次选择中得到结果,那么结果数组应该是这样的

array (size=2)
  'id' => string '15' (length=2)
  'content' => string 'table1 content' (length=22)

否则,如果 select 从第二个 select 语句中得到结果,那么结果数组应该是这样的

array (size=2)
  '**p_id**' => string '15' (length=2)
  '**p_content**' => string 'table2 content' (length=22)
4

1 回答 1

0

这是不可能的。整个查询结果中的列名将相同。这些列名实际上是查询结果的列名,不需要与表中的列名相同:

SELECT id as Numbers, content as Texts FROM table1
UNION ALL
SELECT p_id, p_content FROM table2;

您可以执行两个单独的查询并分别处理它们的结果。

或者,您可以返回一个额外的常量值来确定结果之间的关系:

SELECT id, content, '1' as TableNr FROM table1
UNION ALL
SELECT p_id, p_content, '2' FROM table2;

现在,对于每一行,您可以询问“TableNr”列的值以查看它来自哪个表。

于 2013-06-22T07:00:39.507 回答