說我有與4個字段,A,B,C和D,A,B數據庫表T 「默認」 的列,和C是主鍵。對於[A,B]的任何組合,總有一行在哪裏C == spaces
。有或沒有其他行C != spaces
。我有一個查詢,獲取其中[A, B] == [in_a, in_b]
,並在那裏C == in_c
如果這樣的行存在,或者C == spaces
如果in_c行不存在,所有行。所以,如果有一行匹配特定的C值,我想要那個,否則我想要空格之一。如果有一個匹配的C行,這是非常重要的,我不會被返回的空間之一。如何在SELECT查詢
我有一個工作查詢,但它不是非常快。這在DB2 for z/OS上執行。我完全控制這些表格,所以我可以根據需要定義新的標記。現在唯一的索引是主鍵[A, B, C]
。這個SQL有點麻煩,我覺得這是更好的方法來完成這個任務。我能做些什麼來使這個查詢更快?
查詢我現在是:
SELECT A, B, C, D FROM T
WHERE A = :IN_A AND B > :IN_B AND
(C = :IN_C
OR (NOT EXISTS(
SELECT B FROM T WHERE
A = :IN_A AND B > :IN_B AND C = :IN_C))
AND C = " ");
哎呀,在SQL中有a =而不是a>。該查詢總是返回多行,因此B>:IN_B部分。 – 2009-12-04 05:24:18