mySQL UNION将列添加到生成的查询结果中

时间:2016-06-24 04:23:58

标签: mysql

所以我有这个查询

SELECT a.*, b.full_name as salesman 
                    from sales a
                    LEFT JOIN user b ON a.salesman_id = b.id
                    WHERE a.deleted_at IS NULL AND (a.status = '1'  || a.status = '2' )  
                    AND a.balance <= 0

我想添加另一个与第一个查询中的任何列无关的列。我想在生成的结果中添加另一列(payment_amount)

用Google搜索了一段时间后,我进入了这个查询

SELECT a.*, b.full_name as salesman from sales a
                    LEFT JOIN user b ON a.salesman_id = b.id
                    WHERE a.deleted_at IS NULL AND (a.status = '1'  || a.status = '2' )  
                    AND a.balance <= 0

UNION ALL
SELECT '','','','','','','','','','','','','','','','','','','','','','','','','','','',payment_amount from transaction

但是,我无法在生成的结果旁边看到payment_amount列。

请注意,我无法修改数据库。

第一个查询返回28列。 这里有什么问题?已经处理了几个小时。 给予的任何帮助真的很感激。谢谢。

2 个答案:

答案 0 :(得分:1)

union all只会在以前查询的结果中添加行。究竟是什么问题?此外,如果您在第二个查询中添加额外的列,则需要先添加虚拟列。

performBatchUpdates:completion:

答案 1 :(得分:0)

SQL查询结果中的所有行都具有相同的列名。使用UNION时,列名称取自联合中第一个子查询的名称/别名。因此,在您的情况下,payment_amount将位于名为salesman的列中,因为这是第一个子查询中的相应列。

如果您希望它位于自己的列中,则可以向第一个子查询添加额外的列0 AS payment_amount,并向第二个子查询添加额外的''

SELECT a.*, b.full_name as salesman, 0 AS payment_amount
from sales a
LEFT JOIN user b ON a.salesman_id = b.id
WHERE a.deleted_at IS NULL AND (a.status = '1'  || a.status = '2' )  
AND a.balance <= 0

UNION ALL
SELECT '', '','','','','','','','','','','','','','','','','','','','','','','','','','','',payment_amount from transaction