Select 语句返回我不想要的数据
Select statement returning data I don't want
正在尝试排除任何有 m 或缺失的行,但它们仍然存在。
SELECT temp, wind_chill, wind_spd_flag
FROM weather
WHERE temp<0 OR wind_chill<0
AND wind_spd_flag NOT 'M' OR 'Missing';
对此很陌生,感谢您的帮助!
原创
SELECT temp, wind_chill, wind_spd_flag
FROM weather
WHERE temp<0 OR wind_chill<0
AND wind_spd_flag NOT 'M' OR 'Missing';
- 在 where 子句中使用 OR 时,请务必在“OR”条件周围使用 (),否则 and 将无法正常工作
- 不是这个或那个...是
NOT IN
或 multiple ands
考虑 1:
SELECT temp, wind_chill, wind_spd_flag
FROM weather
WHERE (temp<0 OR wind_chill<0)
AND wind_spd_flag NOT in ('M','Missing');
考虑 2:(<> 或 != 取决于您的环境)
SELECT temp, wind_chill, wind_spd_flag
FROM weather
WHERE (temp<0 OR wind_chill<0)
AND wind_spd_flag <> 'M'
AND wind_spd_Flag <> 'Missing';
为什么?
假设我们使用了没有 () 的有效语法
WHERE temp<0 OR wind_chill<0
AND wind_spd_flag <> 'M'
AND wind_spd_Flag <> 'Missing';
我们会得到所有 temp<0 的记录
windchill <0 的那些也必须排除 M 或 Missing 的风速。这是数学.. 从左到右没有操作顺序...需要 () 来指定您希望如何执行顺序。
因此温度 <0 且 M 或缺失仍会存在。
WHERE (temp<0 OR wind_chill<0)
AND wind_spd_flag <> 'M'
AND wind_spd_Flag <> 'Missing';
现在说,“首先获取 temp 或 windchill < 0 的记录”,然后从该结果集中排除 missing
和 m
;从而消除所有 M 和丢失的风速标志。
提示:() 将 OR 与 AND 组合使用时很重要
正在尝试排除任何有 m 或缺失的行,但它们仍然存在。
SELECT temp, wind_chill, wind_spd_flag
FROM weather
WHERE temp<0 OR wind_chill<0
AND wind_spd_flag NOT 'M' OR 'Missing';
对此很陌生,感谢您的帮助!
原创
SELECT temp, wind_chill, wind_spd_flag
FROM weather
WHERE temp<0 OR wind_chill<0
AND wind_spd_flag NOT 'M' OR 'Missing';
- 在 where 子句中使用 OR 时,请务必在“OR”条件周围使用 (),否则 and 将无法正常工作
- 不是这个或那个...是
NOT IN
或multiple ands
考虑 1:
SELECT temp, wind_chill, wind_spd_flag
FROM weather
WHERE (temp<0 OR wind_chill<0)
AND wind_spd_flag NOT in ('M','Missing');
考虑 2:(<> 或 != 取决于您的环境)
SELECT temp, wind_chill, wind_spd_flag
FROM weather
WHERE (temp<0 OR wind_chill<0)
AND wind_spd_flag <> 'M'
AND wind_spd_Flag <> 'Missing';
为什么?
假设我们使用了没有 () 的有效语法
WHERE temp<0 OR wind_chill<0
AND wind_spd_flag <> 'M'
AND wind_spd_Flag <> 'Missing';
我们会得到所有 temp<0 的记录 windchill <0 的那些也必须排除 M 或 Missing 的风速。这是数学.. 从左到右没有操作顺序...需要 () 来指定您希望如何执行顺序。
因此温度 <0 且 M 或缺失仍会存在。
WHERE (temp<0 OR wind_chill<0)
AND wind_spd_flag <> 'M'
AND wind_spd_Flag <> 'Missing';
现在说,“首先获取 temp 或 windchill < 0 的记录”,然后从该结果集中排除 missing
和 m
;从而消除所有 M 和丢失的风速标志。
提示:() 将 OR 与 AND 组合使用时很重要