当我的所有搜索条件都为空时,如何在MySQL中找到最新的匹配记录?

时间:2015-01-28 22:11:57

标签: mysql

我有一个表格,其中包含我用作搜索条件的可空字段,以及用于排序的creation_date

我尝试编写查询以根据这些搜索条件查找最新记录,但如果其中一条记录缺失,我仍希望仍然匹配。

所以我尝试为每个字段执行fieldname = ? or null并使用order by creation_date limit 1,但如果我这样做,那么如果有一行所有字段都是null,那么它会返回一个而不是旧的记录,而不是全部null

如何让它更喜欢具有更多匹配字段的结果,但不要求每个字段都存在?

1 个答案:

答案 0 :(得分:0)

请尝试以下内容:

SELECT
   {field list}
FROM
   {your table}
WHERE
   IFNULL(field1, @par1) = @par1
   AND IFNULL(field2, @par2) = @par2
   .....
ORDER BY
   creation_date DESC 
limit 1

在上述情况下,如果ie field1具有特定记录的NULL值,IFNULL函数将返回给定的第二个参数,因此在这种情况下的真实比较将是@par1 = @par1这总是如此。因此,在NULL值字段的情况下,该部分不会影响搜索结果。

我希望它有所帮助。