我有一个名为Database1的数据库和名为table1的表。表中的列是Client Name和Country.I想要根据使用LIKE的条件搜索客户端,并希望在结果中排除客户端NOT LIKE(不在国家。
Client Name,Country
Sandeep,India
Mandeep,USA
John,Japan
Vinay,China
Amit,USA
etc...
我尝试了以下陈述的查询。它确实给出了结果,但没有过滤或排除不喜欢的国家/地区,而是显示所有国家/地区。
SELECT CLIENT NAME,
COUNTRY
FROM DATABASE1.TABLE1
WHERE (CLIENT NAME LIKE 'VINAY')
OR (CLIENT NAME LIKE 'AMIT')
AND COUNTRY NOT IN ('INDIA',
'JAPAN')
我也试过NOT LIKE
:
SELECT CLIENT NAME,
COUNTRY
FROM DATABASE1.TABLE1
WHERE (CLIENT NAME LIKE 'VINAY')
OR (CLIENT NAME LIKE 'AMIT')
AND (COUNTRY NAME NOT LIKE 'INDIA')
AND (COUNTRY NAME NOT LIKE 'JAPAN')
上述两项都给出了结果但没有过滤掉/排除印度和中国的结果。尽管使用了不喜欢/不在,所有国家都出现了结果
任何解决方案或我的错误是什么?
答案 0 :(得分:0)
两个队列的变化:
查询1:
SELECT CLIENT NAME,
COUNTRY
FROM DATABASE1.TABLE1
WHERE (CLIENT NAME LIKE 'VINAY' OR CLIENT NAME LIKE 'AMIT')
AND COUNTRY NOT IN ('INDIA', 'JAPAN')
查询2:
SELECT CLIENT NAME,
COUNTRY
FROM DATABASE1.TABLE1
WHERE (CLIENT NAME LIKE 'VINAY' OR CLIENT NAME LIKE 'AMIT')
AND COUNTRY NAME NOT LIKE 'INDIA' AND COUNTRY NAME NOT LIKE 'JAPAN'
答案 1 :(得分:0)
AND
的{{3}}高于OR
,因此您的第一个过滤器相当于:
(CLIENT NAME LIKE 'VINAY') OR (
(CLIENT NAME LIKE 'AMIT') AND COUNTRY NOT IN ('INDIA','JAPAN')
)
同样,您的第二个过滤器相当于:
(CLIENT NAME LIKE 'VINAY') OR (
(CLIENT NAME LIKE 'AMIT') AND
(COUNTRY NAME NOT LIKE 'INDIA') AND
(COUNTRY NAME NOT LIKE 'JAPAN')
)
要指定替代优先顺序,您应该包含明确的括号:
(CLIENT NAME LIKE 'VINAY' OR CLIENT NAME LIKE 'AMIT')
AND COUNTRY NOT IN ('INDIA','JAPAN')
(请注意,在自己的括号中包含个别术语不会产生任何影响,因此我已删除它们。)
另请注意,对于IN()
条款,您的表达式可以使用OR
缩写:
CLIENT NAME IN ('VINAY','AMIT') AND COUNTRY NOT IN ('INDIA','JAPAN')