2

假设我有三个不同的选择语句,像这样

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 中组合三个选择查询,其中每个查询都排除了前一个查询的结果?

4

1 回答 1

8

使用案例陈述

SELECT
   CASE WHEN stageCompleted = 1 THEN 'Final'
        WHEN StartDate < NOW() THEN 'Active'
        ELSE 'Inactive'
   END,
   ID
FROM Stage
于 2012-07-06T14:13:26.193 回答