0

我有一个像这样的查询

SELECT FirstColumn
WHERE SecondColumn = ?
AND ThirdColumn = ?

可能存在一种情况,即提供了一个?值,但对于另一个?没有值。喜欢

[0] => 123
[1] => 

所以查询可能是SELECT FirstColumn WHERE SecondColumn = 123 AND ThirdColumn = ''

实验时,看到对于这样的查询 mysql 什么都不返回(没有数组)。

但必要的是返回空值NULL或零的数组。喜欢

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

所以试图找到解决方案。

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

其他解决方案是查询这样的东西

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

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

试过了

SELECT FirstColumn
WHERE SecondColumn = 0
AND ThirdColumn = 0`

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

4

1 回答 1

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.

于 2013-08-25T15:05:00.877 回答