mysql使用JOIN表进行多次查询并将结果合并到1行

标签 mysql join

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

看看这里:http://sqlfiddle.com/#!5/89973/30

最佳答案

如果您确定只有一个结果,请使用子查询。

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/

相关文章:

mysql - 如何提高基于字符串的查询连接的性能?

MySQL 显示存在于一个表中但不存在于另一个表中的行

mysql - 组及其楼层 - MySQL 加入

php - WordPress 插件 : How to resolve "Call to undefined function add_action() as well as add_action()"?

mysql - MySQL死锁: engine.日志分析

c# - 我尝试使用 C# txtbox 表单在 mysql 数据库中插入数据,但总是出现错误?

mysql - 带连接和求和的 SQL 查询

php - 导致 sum() 到多个结果的分组表

MySQL self-join with order by optimization

mysql - 如何使用具有多个条件的左连接来连接两个表?