0

複数のフィールドを持つテーブルがあり、2 つのフィールドが特定の値に等しく、field3 が 1 で field4 が 4、5、6、または field3 が 0 であるすべての行を選択したいのですが、field3 が 0 の場合に結果を返す必要があります。 field4 は 4、5、6 です。このクエリでは、field3 = 0 で行が返されません。

これが私のクエリです。

SELECT * from table where field1 = 1 AND field2 = 0 AND (field3 = 1 AND field4 !=4
AND field4 !=5
AND field4 !=6)
4

2 に答える 2

2

このようなことを試してください:

SELECT * from table where 
          field1 = 1 AND field2 = 0 
            AND (
                  (field3 = 1 AND (field4 = 4 OR field4 = 5 OR field4 = 6))
                     OR 
                  (field3 = 0)
                )
于 2013-07-30T06:33:40.207 に答える
1

散文テキストに従ってステートメントを正確にクラスター化し、括弧に入れます。

SELECT *
FROM
    table
WHERE
    field1 = x
    AND field2 = y
    AND (
        (field3 = 1 AND field4 IN (4, 5, 6))      -- field3 = 1 and field4 has one of specified values
        OR                                        -- or alternatively
        (field3 = 0 AND field4 NOT IN (4, 5, 6))  -- field3 = 0 and field4 doesn't have any of the specified values
    )

編集: 実際には、あなたの投稿をもう一度読んだ後、field4 を 4、5、または 6 のいずれかにする必要があり、field3 を 0 または 1 のいずれかにする必要がありますか? それとも間違っていますか? これは次のことを意味します。

SELECT *
FROM
    table
WHERE
    field1 = x
    AND field2 = y
    AND field3 IN (0, 1)
    AND field4 IN (4, 5, 6))
于 2013-07-30T06:31:07.543 に答える