“UNION”中的理想结果

时间:2013-06-22 06:48:09

标签: php mysql sql

我的SQL查询是

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

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

e.g

如果查询从第二个select语句获取数据,则将结果显示为

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

我希望列名具有相应的select语句结果。

e.g

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

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)

1 个答案:

答案 0 :(得分: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”列的值,以查看它来自哪个表。