我的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)
答案 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”列的值,以查看它来自哪个表。