【发布时间】:2010-10-07 06:16:43
【问题描述】:
在 SQL 语法方面,我是个菜鸟。
当然,我有一张有很多行和列的表格:P 假设它看起来像这样:
AAA BBB CCC DDD
-----------------------
Row1 | 1 A D X
Row2 | 2 B C X
Row3 | 3 C D Z
现在我想创建一个高级选择语句,它给我这个组合(这里是伪 SQLish):
select 'Test1', * from TABLE Where CCC='D' AND DDD='X'
select 'Test2', * from TABLE Where CCC<>'D' AND DDD='X'
输出将是:
Test1, 1, A, D, X
Test2, 2, B, C, X
如何将这两个 select 语句组合成一个不错的 select 语句?
如果我像下面这样复杂化 SQL 会起作用吗(因为我自己的 SQL 语句包含一个存在语句)?我只是想知道如何组合选择,然后尝试将其应用到我更高级的 SQL 中。
select 'Test1', * from TABLE Where CCC='D' AND DDD='X' AND exists(select ...)
select 'Test2', * from TABLE Where CCC<>'D' AND DDD='X' AND exists(select ...)
我的 REAL SQL 语句是这样的:
select Status, * from WorkItems t1
where exists (select 1 from workitems t2 where t1.TextField01=t2.TextField01 AND (BoolField05=1) )
AND TimeStamp=(select max(t2.TimeStamp) from workitems t2 where t2.TextField01=t1.TextField01)
AND TimeStamp>'2009-02-12 18:00:00'
这给了我一个结果。但我想将它与此 select 语句的副本结合起来,并在末尾添加 AND,并且“状态”字段将更改为类似“已删除”的字符串。
select 'DELETED', * from WorkItems t1
where exists (select 1 from workitems t2 where t1.TextField01=t2.TextField01 AND (BoolField05=1) )
AND TimeStamp=(select max(t2.TimeStamp) from workitems t2 where t2.TextField01=t1.TextField01)
AND TimeStamp>'2009-02-12 18:00:00'
AND NOT (BoolField05=1)
【问题讨论】:
-
+1 这个问题问得非常好
标签: sql select conditional