我有两个SQL SELECT COUNT语句:

SELECT COUNT(*) FROM table1 t1
INNER JOIN table2 t2 ON t2.id = t1.rowid
WHERE t1.flag1 = false AND t2.flag2 = true;

SELECT COUNT(*) FROM table1 t1
INNER JOIN table2 t2 ON t2.id = t1.rowid
WHERE t1.flag1 = true AND t2.flag2 = false;

可以看出,这两个语句的唯一区别是翻转条件。
但我想做的是将这两个语句组合成一个,这样输出就变成一个表和两列,第一列包含第一条语句的结果,第二列包含第二条语句的结果。类似于:
   count1   |   count 2
-------------------------
    3456    |     9864

顺便说一下,我用的是PostgreSQL。有人能告诉我怎么做吗?
非常感谢

最佳答案

这应该对你有用。我对PostgreSql不太熟悉,但我认为它会有用的。

SELECT
    SUM(CASE WHEN t1.Flag1 = false AND t2.flag2 = true THEN 1 ELSE 0 END) Count1,
    SUM(CASE WHEN t1.Flag1 = true AND t2.flag2 = false THEN 1 ELSE 0 END) Count2
FROM
    table1 t1
    INNER JOIN table2 t2 ON t2.id = t1.rowid

关于sql - 将两个SQL select合并为一个,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14686007/

10-16 00:49