我有一个包含国家,州,城市和地区的mysql表。我想只获得那些城市或地区为空或空的国家。我试过这个问题:
select distinct country from xyz where state != "" and ((city="" and Locality="") or (city="" and Locality!="") or (city!="" and Locality="")) order by country
基本上需要获取城市或地区值为空的所有国家/地区。这个查询给了我很少的国家,这些国家的城市和地区都在同一行。我究竟做错了什么?它给了我拥有城市和地方两个价值观的国家。
我需要没有城市或地区的国家/地区列表,这意味着该国家/地区的所有城市或地区都为空或无效。如果该国的一个记录有城市或地方价值,则不要想要国家。
答案 0 :(得分:1)
您是否正在寻找一个简单的or
:
select distinct country
from xyz
where state <> '' and
(city = '' or Locality= '')
order by country;
如果这不能返回您想要的内容,则可能会遇到NULL
值的问题:
select distinct country
from xyz
where state <> '' and
(city = '' or Locality= '' or city is null or Locality is null)
order by country;
或者可能不需要state
上的条件。
顺便说一下,对于SQL中的字符串常量,你应该使用单引号而不是双引号。
编辑:
如果您想要查询 all 的值为空或NULL
给定国家/地区,请使用聚合和having
子句:
select country
from xyz
group by contry
having min(city = '' or Locality= '' or city is null or Locality is null) > 0
order by country;
答案 1 :(得分:1)
select distinct country
from xyz
where state != ""
and (city="" or Locality="")
答案 2 :(得分:0)
需要使用or
代替and
select distinct country from xyz where state <> "" and (city="" or city is null or Locality="" or Locality is null) order by country
答案 3 :(得分:0)
select distinct country from xyz where (state != "" and (city="" OR Locality=""))
答案 4 :(得分:0)
尝试使用IsNull
属性。
SELECT DISTINCT country
FROM xyz
WHERE state <> '' AND
(city = '' OR Locality= '' OR city IS NULL OR Locality IS NULL)
ORDER BY country;
int
值永远不能包含值''
。如果int
或city
Locality
值