Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL在表中的多个列上使用多个条件选择_Mysql_Sql - Fatal编程技术网

MySQL在表中的多个列上使用多个条件选择

MySQL在表中的多个列上使用多个条件选择,mysql,sql,Mysql,Sql,我有一个名为Database1的数据库和名为table1的表。表中的列是客户端名称和国家/地区。我希望使用LIKE根据条件搜索客户端,并希望在结果中排除来自非LIKE(不在)国家/地区的客户端 Client Name,Country Sandeep,India Mandeep,USA John,Japan Vinay,China Amit,USA etc... 我尝试了下面的查询。它会给出结果,但不会过滤或排除不喜欢的国家,而是显示所有国家 SELECT CLIENT NAME,

我有一个名为Database1的数据库和名为table1的表。表中的列是客户端名称和国家/地区。我希望使用LIKE根据条件搜索客户端,并希望在结果中排除来自非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')
我还尝试了
不喜欢

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')
以上两种方法都给出了结果,但没有过滤/排除结果中的印度和中国。尽管使用了Not LIKE/Not in,但所有国家都出现了结果


有什么解决方案或者我的错误是什么?

两个问题的变化:

问题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:

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'

的值高于
,因此您的第一个过滤器相当于:

(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')
)
(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()
对表达式进行缩写:

CLIENT NAME IN ('VINAY','AMIT') AND COUNTRY NOT IN ('INDIA','JAPAN')

的值高于
,因此您的第一个过滤器相当于:

(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')
)
(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()
对表达式进行缩写:

CLIENT NAME IN ('VINAY','AMIT') AND COUNTRY NOT IN ('INDIA','JAPAN')

解决-过去3天一直在做同样的事情…你们花了2分钟才给出解决方案。你们真是天才。非常感谢你们的解决方案。解决-过去3天一直在做同样的事情…你们花了2分钟才给出解决方案。你们真是天才。非常感谢你们的解决方案。