在多列中查找单个值

  • 本文关键字:查找 单个值 sql
  • 更新时间 :
  • 英文 :


在一种情况下,我需要确定给定用户记录的多达20个不同列中的一个列中是否存在单个值,但它们不是特定于位置的。因此,每个用户都有一个或多个他们负责维护的应用程序,当输入特定的应用程序时,查询将在用户记录中的所有20列中查找该应用程序值。我不想做的是这样的事情:

Select * from users u
where 
u.app1 = 'appl1' or u.app2 = 'appl1' or u.app3 = 'appl1' or... u.app20 = 'appl1'

有没有一种方法可以将where子句简化为类似的内容

where u.app* = 'appl1'

不,不能以这种方式简化where子句。但是,您可以使用in:

Select *
from users u
where 'appl1' in (u.app1, u.app2, u.app3,  . . . u.app20)

通常,这种重复的列是糟糕的数据库设计的一个例子。您应该有另一个表,每个用户/应用程序组合有一行(比如UserApps)。有了这样的表,查询会简单得多。

最新更新