我有一个SQL表,其中有一个名为国家/地区的列,我想显示国家/地区名称= UK的详细信息,我正在尝试使用以下语句进行操作:
select *
from register_bs
INNER JOIN spouse_details ON register_bs.reg = spouse_details.reg
WHERE country != 'Australia' AND 'USA';
当我只使用时
country != 'Australia'
它显示英国和美国的值,但是当我使用 AND 运算符时,例如
country != 'Australia' AND 'USA'
它没有显示任何值(我的表中有英国的值(。 谁能告诉我为什么我的查询不起作用
您的问题是您实际上想将country
与这两个字符串进行比较,即
country != 'Australia' AND country != 'USA'
或者也许
country NOT IN ('Australia', 'USA')
当您有多个值时,后一种形式更实用。
您当前的代码试图将'USA'
用作布尔值,因此MySQL尝试将其转换为整数,结果为0(因为字符串没有前导数字(,然后转换为false。所以你的病情变成了
country != 'Australia' AND false
这始终为 false,因此查询不返回任何行。
这是正确的语法:
select * from register_bs INNER JOIN spouse_details ON register_bs.reg
= spouse_details.reg WHERE country != 'Australia' AND country != 'USA';
OR 对于多个值,请使用 :
select * from register_bs INNER JOIN spouse_details ON register_bs.reg
= spouse_details.reg WHERE country NOT IN('Australia', 'USA', 'DENMARK', 'JAPAN');
你的状况坏了。
请改用NOT IN
运算符。
select * from register_bs INNER JOIN spouse_details ON register_bs.reg = spouse_details.reg WHERE country not in ('Australia', 'USA');
SQL就像其他语言一样;你必须重复这个国家。 试试这个:select * from register_bs INNER JOIN spouse_details ON register_bs.reg = spouse_details.reg WHERE country != 'Australia' AND country != 'USA';