查询列具有相似数据的数据库

时间:2012-05-14 22:44:03

标签: sql database

我有20列具有相同的数据。 Dept_1,dept_2,dept_3 .... 我想查询数据库,其中每个列都匹配(伪代码:where dept_1, dept_2, dept_3... = 'ACCOUNTING'),而不必在WHERE子句中实际写出所有这20列。有没有办法做到这一点?

3 个答案:

答案 0 :(得分:2)

我非常质疑数据库的设计......但也许这就是你要找的东西?

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

答案 1 :(得分: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个字段具有相同值的数据,或者是否要在至少其中一个字段匹配时获取数据。

答案 2 :(得分:0)

我认为使用较短版本更容易:

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

如果您需要所有字段都相同,则使用带有AND的where子句。

但是,您可能希望重新设计数据库,以便为每个部门创建一个包含单独行的表。