这个简单的查询是否有更短的符号?

时间:2011-09-13 12:14:15

标签: mysql

我正在构建一个覆盖几个WHERE AND条件的查询。这是一个例子:

... 
WHERE stage1 = 3 
AND stage2 = 3 
AND stage3 = 3 
AND stage4 = 3 
AND stage5 = 3 
AND submitted = 0

是否有更短的写作方式,可能像WHERE TRUE(stage1=3 & stage2=3 ...)

编辑 - 仅供参考,以下是表格:

enter image description here

2 个答案:

答案 0 :(得分:6)

更短的写作方式是:

WHERE (stage1, stage2, stage3, stage4, stage5, submitted)
    = (3, 3, 3, 3, 3, 0)

不管怎么说,不管怎么说都不会更快。

答案 1 :(得分:2)

不,没有。你建议的符号并不是很短。 :)

为什么你需要它更短,你有什么表结构,所有这些阶段字段应该是3?

[edit]添加了一个从假设细节表中查询阶段的解决方案。

select
  *
from 
  FormsTable f
where
  f.submitted = 0 and
  not exists
    (select 'x' 
    from 
      PageDetailTable d
    where
      d.FormId = f.FormId and
      d.State <> 3)

目前这种情况并不短,但是当您获得由更多(或更少)页面组成的更复杂的表单时,您可以更轻松地支持这一点。创建表单时,将为其包含的每个页面创建一条记录。在页面记录中,您不仅可以存储状态,还可以存储您可能需要的其他数据。当您获得具有更多或更少页面的不同类型的表单时,您可以创建这些页面。此查询仅检查表单是否未提交以及是否没有任何尚未完成的页面。无论有多少页都无关紧要。