我有20列具有相同的数据。
Dept_1,dept_2,dept_3 ....
我想查询数据库,其中每个列都匹配(伪代码:where dept_1, dept_2, dept_3... = 'ACCOUNTING'
),而不必在WHERE
子句中实际写出所有这20列。有没有办法做到这一点?
答案 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子句。
但是,您可能希望重新设计数据库,以便为每个部门创建一个包含单独行的表。