需要mysql返回零值的数组(或空或NULL)

时间:2013-08-25 14:50:36

标签: php mysql

我有一个像

这样的查询
SELECT FirstColumn
WHERE SecondColumn = ?
AND ThirdColumn = ?

可能会出现一个?值,但另一个?没有值。像

[0] => 123
[1] => 

因此查询可能是SELECT FirstColumn WHERE SecondColumn = 123 AND ThirdColumn = ''

在进行实验时,看到对于这样的查询,mysql不返回任何内容(没有数组)。

但必须返回空值或NULL或零的数组。像

[0] => Array
    (
        [FirstColumn] => 0
    )

所以试图找到解决方案。

一种解决方案可能是在mysql中创建行FirstColumnSecondColumnThirdColumn0。并php修改?的数据,因此如果为空变量,则?的数据为0。然后使用相同的mysql查询。似乎这不是一个很好的解决方案。

其他解决方案是查询类似

的内容
SELECT FirstColumn
WHERE SecondColumn = IFNULL(?,0) 
AND ThirdColumn = IFNULL(?,0)

使用0创建了mysql行,执行了查询。一切正常,但不会返回SecondColumnThirdColumn0的数组元素。我的查询有问题或可能IFNULL无法以这种方式使用。请,建议需要纠正什么?或者可能是更好的解决方案?

尝试

SELECT FirstColumn
WHERE SecondColumn = 0
AND ThirdColumn = 0`

并获取具有0值的数组。可能IFNULL使用不正确......

1 个答案:

答案 0 :(得分:1)

此查询将始终返回一行:

SELECT * FROM (
  SELECT FirstColumn
  FROM mytable
  WHERE SecondColumn = ?
  AND ThirdColumn = ?
  UNION ALL
  SELECT NULL -- code your "not found" value here
) x
LIMIT 1

UNION ALL保留选择的订单行,因此如果第一个查询(您的原始查询)返回一行,即返回的行,否则返回由单独选择创建的行。

您可以为“默认”值选择任何值,只要它与FirstColumn的数据类型兼容。