2014-01-28 38 views
0

我想比較SQL表中2個不同列的值。比較同一個SQL表中的2列

A ---------------- B 
10 -------------- 88 
20 -------------- 401 
30 -------------- 20 
40 -------------- 99 

我想保持其相等的第一列的值(20)的第二列的值,而且還包括含有第一列的值(如401其中包含40)。

因此,在這個例子中,我會看到一列C具有:

A ---------------- B ----------------- C 
10 -------------- 88 ---------------- No 
20 -------------- 401 -------------- Yes 
30 -------------- 20 ---------------- Yes 
40 -------------- 99 ---------------- No 
其實

,我可以在同一行中比較字段,但這種比較並不適用於列中的所有領域。

有沒有可能這樣做?

感謝

+0

我想你需要使用子查詢來比較行外。 –

回答

1

您可以嵌套selectcase聲明做到這一點。嵌套選擇使用like來查看是否有任何行滿足相似條件。需要注意的是like會找到一個匹配,如果值是相同的,以及當B柱與A列開始:

select t.*, 
     (case when exists (select 1 from table t2 where t1.B like concat(t2.A, '%')) 
      then 'Yes' 
      else 'No' 
     end) as C 
from table t; 

編輯:

如果包含,你想'1401'爲了匹配'40' ,那麼like的模式應該是:concat('%', t2.A, '%')

+1

需要用'%'包裝兩邊--OP正在尋找包含*不是*的簡單* *開始於* –

+1

@SetSailMedia的值。 。 。我不確定OP是否在使用*包含*,但我在答案中添加了一個註釋。 –