2012-05-14 67 views
0

我有20列具有相同數據。 Dept_1,dept_2,dept_3 .... 我想查詢數據庫,其中每個列匹配(僞代碼:where dept_1, dept_2, dept_3... = 'ACCOUNTING'),而不必實際寫出WHERE子句中的所有20列。有沒有辦法做到這一點?查詢colmns具有相似數據的數據庫

+1

我可能會重新考慮數據庫的設計。在不瞭解你想要做什麼的情況下,@ mellamokb的解決方案可能是最好的,儘管你的問題似乎更多的是解決這個嚴重的設計缺陷。 – swasheck

+0

我同意swasheck:「dept_1」到「dept_20」的表格非常強烈地表示設計錯誤。 –

回答

2

我嚴重質疑數據庫的設計......但也許這是你在找什麼?

WHERE Dept_1 = 'ACCOUNTING' 
    AND Dept_2 = 'ACCOUNTING' 
    AND Dept_3 = 'ACCOUNTING' 
    ... ad nauseum 
    AND Dept_19 = 'ACCOUNTING' 
    AND Dept_20 = 'ACCOUNTING' 
+0

呃的確如此。這個問題似乎更多地涉及到不必輸入所有這些。 – swasheck

+0

是的,我知道我可以這樣做。但我不想輸入所有這些...... – Mohit224

+0

那麼你只需要做一次,這將需要幾分鐘的時間。這是用在很多地方還是什麼的?您可以使用存儲過程並傳入部門,因此您只能在一個位置使用這種難看的邏輯。 – mellamokb

0

最簡單的方法可能會做這樣的事情:

SELECT * FROM table 
WHERE dept_1 = 'ACCOUNTING' 
    AND dept_2 = 'ACCOUNTING' 
    AND dept_3 = 'ACCOUNTING' 

OR

SELECT * FROM table 
WHERE dept_1 = 'ACCOUNTING' 
    OR dept_2 = 'ACCOUNTING' 
    OR dept_3 = 'ACCOUNTING' 

如果你想抓住所有3個字段具有相同值的數據這取決於,或者當至少有一個字段匹配時是否要獲取數據。

0

我覺得它更容易用戶較短的版本:

select * 
from table 
where 'ACCOUNTING' in (dept_1, dept_2, dept_3, . . .) 

如果你需要的所有字段是相同的,然後使用where子句用與運算。

但是,您可能需要重新設計數據庫以使每個部門都有一個單獨的行。