目的是了解如何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)然后排除其中 value 值EntryId
包含 24 的结果(AND EntryId NOT LIKE %24%
我的意思是:显示结果,其中EntryId
不包含 24)
4)然后从上面的结果中只显示RecordDay
等于 17 的结果,也显示RecordDay
等于 16 的RecordDay = 17 OR RecordDay = 16
结果(我的意思是:显示结果(行)RecordDay
等于 17 或RecordDay
等于 16)
但在输出中看到结果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)
从advises得出了一些结论。
如果要过滤结果以查看以下结果 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
在两个查询中是相同的。但位置()
不同。所以输出会不同吗?
现在得出结论,如果希望查询OR
更好地在输入字段(用于过滤器)中创建为过滤器写入多个值的可能性。例如,如果我想查看结果,其中月份是 4 月、5 月、6 月,在输入字段中写入 04、05、06。
如果我的结论有误,请纠正我