选择包含多个列的结果


Select the result where multiple columns

我需要通过检查多列来选择结果。

 SELECT * FROM atricle WHERE  
    a.article_free_1 = 1 AND  
    a.article_free_2 = 1 AND 
    a.article_free_3 = 1 AND 
    a.article_free_4 = 1 AND 
    a.article_free_5 = 1 AND 
    a.article_free_6 = 1 AND 
    a.article_free_7 = 1 AND 
    a.article_free_8 = 1 AND 
    a.article_free_9 = 1 AND 
    a.article_free_10 = 1;

这里我想简化查询。它很长,我需要在我的查询中添加40+列。

如何简化我的查询?

如果您非常频繁地使用这个查询,那么最好在表中创建一个计算/计算列。就像这样:

(CASE WHEN article_free_1 = 1 
       AND article_free_2 = 1 AND ....THEN 1 ELSE 0 END)


SELECT * FROM atricle WHERE <computedColumn> = 1

它应该简化查询,并在每次执行查询时为您提供优化的结果。

我还不能简单地评论,所以我将发布一个答案。你的查询是最优的。计算过的字段只会增加开销,妨碍查询优化器尝试求值。无论你做什么,不要在sql中循环,这是一种可怕的补充方式,试图让人们喜欢sql。坚持使用标准查询。你得到的很好。

我刚刚读了Jeemusu写的东西。现货。