2012-11-27 47 views
2

我有一个表有很多列,但有两个主列名为DistrictState。我的SQL查询如下。MySQL查询将值分配给来自不同列的相同变量

$query = "SELECT * FROM table WHERE District = '" . $var . "' ORDER BY Date DESC"; 

此查询返回分区列中的数据。

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

可以这样做在MySQL查询或将我必须在PHP中写东西?

+0

你说的 '电梯' 是什么意思? – arkascha

+0

我如何理解你的问题,你将需要'coalesce'功能 – tnanoba

+0

尝试添加“Or state ==。$ var” –

回答

6

你什么意思是空的?如果是NULL那么你应该使用COALESCE

SELECT *, COALESCE(District, State) NewDistrict 
FROM... 

但如果是空的,因为''。然后

SELECT *, IF(District = '', State, District) NewDistrict 
FROM... 
0
$query = "SELECT * FROM table WHERE District = '" . $var . "' OR State = '" . $var . "' ORDER BY Date DESC"; 
+0

这是不是打开注入? – ch4nd4n

+0

@ Ck-这是脱离主题。此外:取决于$ var的值是否被转义,我会说... – arkascha

+0

@arkascha:即使它被转义了,它很清楚OP没有使用预处理语句,所以代码几乎可以肯定会不安全 –

1
SELECT * 
FROM table 
WHERE District = '$var' 
    OR (District='' AND State='var') 
ORDER BY Date DESC 
相关问题