所以我有这个查询
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列。 这里有什么问题?已经处理了几个小时。 给予的任何帮助真的很感激。谢谢。
答案 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