2

Mysql クエリの質問

たとえば、1、2、または 5 の場合に 1 として数える方法

field1 = 1 field2= 1 field3= 5 field4= 2 field5=0; field6=6;

必要なのは、これらのフィールドのいずれかが 1、2、または 5 であるかどうかを確認し、それらを 1 としてカウントして残りを無視することです。

SELECT field1+field2+field3+field4+field5+field6; FROM テーブル WHERE id=1; // 4 (1+1+1+1+0+0) を返す必要があります

これを行うことができますか、それともphpで行う必要がありますか?

4

4 に答える 4

1

これはうまくいくはずです:

select count(field1) + count(field2) + count(field3) + count(field4) + count(field5) + count(field6) as total
from table
where 
    field1 in(1,2,5)
    or field2 in(1,2,5)
    or field3 in(1,2,5)
    or field4 in(1,2,5)
    or field5 in(1,2,5)
    or field6 in(1,2,5)

編集:ただし、eggyalは素晴らしい点です. より良い解決策を見つけるために、目標について詳しく教えていただけますか?

于 2012-07-02T08:25:26.127 に答える
1

検索CASEステートメントを使用できますが、@eggyal によって提案されているように、スキーマに設計上の欠陥がある可能性があります。それを修正すると、要件が非常に簡単になります。

SELECT  CASE WHEN Field1 IN (1, 2, 5) THEN 1 ELSE 0 END
        + CASE WHEN Field2 IN (1, 2, 5) THEN 1 ELSE 0 END
        + CASE WHEN Field3 IN (1, 2, 5) THEN 1 ELSE 0 END
        + CASE WHEN Field4 IN (1, 2, 5) THEN 1 ELSE 0 END
        + CASE WHEN Field5 IN (1, 2, 5) THEN 1 ELSE 0 END
        + CASE WHEN Field6 IN (1, 2, 5) THEN 1 ELSE 0 END
FROM    Table
于 2012-07-02T08:35:18.833 に答える