AND
OR
目的は、複数の列からデータをフィルター処理する方法を理解することです。
ここにクエリのサンプルがあります
SELECT * FROM 2_1_journal WHERE
EntryId > 10
AND EntryId != 23
AND EntryId NOT LIKE %24%
AND
RecordDay = 17 OR RecordDay = 16
このクエリで私が欲しい
1) 最初に、値EntryId
が 10 を超えるすべての結果を選択します
2) 次に、値EntryId
が 23の結果を除外します
3) 次に、値の値に24 がEntryId
含まれる結果を除外します (つまり、24 を含まないAND EntryId NOT LIKE %24%
結果を表示しますEntryId
) 。
4) 次に、上記の結果から、17 に等しい結果のみを表示し、16 に等しいRecordDay
結果も表示します (つまり、17 に等しいまたは16 に等しい結果 (行) を表示します)RecordDay
RecordDay = 17 OR RecordDay = 16
RecordDay
RecordDay
しかし、出力でEntryId
は 24 である結果を参照してください ( とは対照的にEntryId NOT LIKE %24%
)。
AND
OR
各 MySQL 列に関してグループ化する必要がありますか?
何かのようなもの:
SELECT * FROM 2_1_journal WHERE
(EntryId > 10
AND EntryId != 23
AND EntryId NOT LIKE %24%)
AND
(RecordDay = 17 OR RecordDay = 16)
アドバイスからいくつかの結論を出しました。
結果をフィルタリングして次の結果を表示する場合 DD/MM: 01/04、01/03、06/04、06/03 コードは正しいですか?
(RecordDay = 01 OR RecordDay = 06)
AND (RecordMonth = 04 OR RecordMonth = 03)
いくつかの可能性を考えてOR
、まったく使用しないほうがよいという結論に達しました。ユーザーがどの注文を希望するかがわからないためです。
$query = "SELECT * FROM 2_1_journal
WHERE
(EntryId LIKE '%10%' OR EntryId LIKE '%23%')
AND
EntryId NOT LIKE '%4%'
AND
(RecordDay = 17 OR RecordDay = 16") ;
//EntryId には 10 と 23 が含まれますが、4 は含まれず、RecordDay は 17 または 16 です (たとえば、EntryId/RecordDay 100/17、231/17、1023/16
$query = "SELECT * FROM 2_1_journal
WHERE EntryId LIKE '%10%'
OR
(EntryId LIKE '%23%' AND EntryId NOT LIKE '%4%')
AND
(RecordDay = 17 OR RecordDay = 16") ;
//EntryId/RecordDay 104/17 は 10 を含む OR (23 を含み、4 を含まない) 104/17 は 10 を含み、4 を含まないという要件はないため
AND
OR
2 つのクエリは同じです。でもの位置()
が違う。それで、出力は異なりますか?
OR
入力フィールド (フィルター用) にフィルター用の複数の値を書き込む可能性を作成する方が良いクエリが必要な場合は、結論を下しました。たとえば、結果を表示したい場合、月は 4 月、5 月、6 月で、入力フィールドに 04、05、06 と入力します。
私の結論が間違っている場合は修正してください