Php mysql查询为不同列中的同一变量赋值

Php mysql查询为不同列中的同一变量赋值,php,mysql,sql,Php,Mysql,Sql,我有一个表,它有许多列,但有两个主要列,分别称为District和State。我的sql查询如下 $query = "SELECT * FROM table WHERE District = '" . $var . "' ORDER BY Date DESC"; 此查询从district列返回数据 这就是我想要的。在某些行中,District列是空的,因此在这种情况下,我希望查询从State列中提取数据。可能吗 这可以在mysql查询中完成,还是我必须用php编写一些东西?空是什么意思?如果为

我有一个表,它有许多列,但有两个主要列,分别称为
District
State
。我的sql查询如下

$query = "SELECT * FROM table WHERE District = '" . $var . "' ORDER BY Date DESC";
此查询从district列返回数据

这就是我想要的。在某些行中,
District
列是空的,因此在这种情况下,我希望查询从
State
列中提取数据。可能吗


这可以在mysql查询中完成,还是我必须用php编写一些东西?

空是什么意思?如果为
NULL
,则应使用
COALESCE

SELECT *, COALESCE(District, State) NewDistrict
FROM...
但如果它是空的,则为
'
。然后

SELECT *, IF(District = '', State, District) NewDistrict
FROM...

你说的“提升”是什么意思?我是如何理解你的问题的?你需要
coalise
function尝试添加一个“Or state==。$var”这不是可以注入的吗?@Ck-这是离题的。此外:取决于$var的值是否被转义,我想说…@arkascha:即使它被转义,很明显OP没有使用预先准备好的语句,所以代码几乎肯定会被转义unsafe@arkascha我不太懂PHP,所以我只是好奇地想知道。加上指向OP的光标,他应该知道这一点。@Ck-当然,有意义。但是你应该在问题上加上这个评论,而不是在这个答案上。。。
$query = "SELECT * FROM table WHERE District = '" . $var . "' OR State = '" . $var . "' ORDER BY Date DESC";
SELECT * 
FROM table 
WHERE District = '$var' 
  OR (District='' AND State='var') 
ORDER BY Date DESC