我有一个查询
select idpays,idannonce,idville
from annonces
我需要在其中idpays=1
显示idville
null
其他idpays
显示idville
{{ 1}}
我该怎么办呢?
问候
答案 0 :(得分:3)
你可能正在寻找这个
WHERE ( idpays = 1 AND idville NOT NULL) OR idpays > 1
答案 1 :(得分:1)
如果您的idpays
列包含NULL
值:
select idpays,idannonce,idville
from annonces
where (idpays = 1 AND idville IS NOT NULL) OR (ISNULL(idpays, 0) <> 1)
如果您要为idpays = 1和仅为idpays&lt;&gt;找到NULL NULL值1。
select idpays,idannonce,idville
from annonces
where (idpays = 1 AND idville IS NOT NULL) OR (ISNULL(idpays, 0) <> 1 AND idville IS NULL)
答案 2 :(得分:0)
当idpays = 1时,你没有指定应该显示什么,但是这里是你问的基础 - 你可以用SELECT中的一个案例来做这个,这听起来更像是你的问题描述而不是where子句:
select idpays,idannounce,
case when idpays=1 then idville
else null end
from unknowntable
基于OP评论的编辑 - 必须承认我不确定我是否完全了解OP的要求:
select
from table
where (idpays<>1) or
(idpays=1 and idville not null)
答案 3 :(得分:0)
尝试使用CASE功能。我根本不认为你需要ELSE声明:
SELECT idpays, iddonance,
CASE WHEN idpays = 1 THEN idville END AS idville
FROM annonces