如何组合三个选择查询,每个查询排除前一个查询的结果?

时间:2012-07-06 14:10:07

标签: mysql sql

假设我有三个不同的select语句,比如

SELECT 'Final', ID FROM Stage WHERE stageCompleted = 1;
SELECT 'Active', ID FROM Stage WHERE StartDate < NOW();
SELECT 'Inactive', ID FROM Stage;

我想要的是一些组合这些的方式,它显示一个

  • 返回字符串'Final'以及第一个查询匹配的所有行的行ID
  • 返回字符串'Active'以及第二个查询匹配的所有行的行ID,但不是第一个
  • 并返回字符串'Inactive'和所有剩余行的ID。

我研究了各种各样的连接,但它们似乎并不适合我想要解决的问题。如何在SQL中组合三个选择查询,其中每个查询都排除了之前的结果?

1 个答案:

答案 0 :(得分:8)

使用案例陈述

SELECT
   CASE WHEN stageCompleted = 1 THEN 'Final'
        WHEN StartDate < NOW() THEN 'Active'
        ELSE 'Inactive'
   END,
   ID
FROM Stage