SELECT save AS 'Simpanan', owe AS 'Hutang'
FROM
(
SELECT t.amount AS save, NULL AS owe
FROM trans t JOIN category cat
ON t.category_id = cat.category_id
WHERE cat.category_id = 1
UNION ALL
SELECT NULL AS save, t.amount AS owe
FROM trans t JOIN category cat
ON t.category_id = cat.category_id
WHERE cat.category_id = 2
)
我一直在努力解决这个 mysql 查询。我想要实现的是,结果变成只有 1 行。目前此查询输出 2 行,其中列中的某些字段为 NULL。我怎样才能让它只输出 1 行,如下所示:
Simpanan Hutang
500 200
最佳答案
如果您确定只有一个结果,请使用子查询。
SELECT
(SELECT t.amount AS save
FROM trans t JOIN category cat
ON t.category_id = cat.category_id
WHERE cat.category_id = 1) AS 'Simpanan',
(SELECT t.amount AS owe
FROM trans t JOIN category cat
ON t.category_id = cat.category_id
WHERE cat.category_id = 2) AS 'Hutang'
或者:
SELECT MAX(save) AS 'Simpanan', MAX(owe) AS 'Hutang'
FROM
(
SELECT t.amount AS save, NULL AS owe
FROM trans t JOIN category cat
ON t.category_id = cat.category_id
WHERE cat.category_id = 1
UNION ALL
SELECT NULL AS save, t.amount AS owe
FROM trans t JOIN category cat
ON t.category_id = cat.category_id
WHERE cat.category_id = 2
)
关于mysql使用JOIN表进行多次查询并将结果合并到1行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32425612/