mysql,在"中使用条件"

时间:2014-05-19 12:15:16

标签: php mysql sql date

我有一个数据库表,如:

id name    date     price
1  a    2014-05-12   10
2  a    0000-00-00   20
3  a    2014-05-13   30

我想按日期搜索,如果日期存在,则返回日期的价格。 如果日期不存在,请返回date 0000-00-00的价格。

例如:

search by date:2014-05-12, return `10`
search by date:2014-05-20, return `30`

我试过了:

select price from table where (date=table.date or table.date='0000-00-00')

但它不起作用。

如何编写正确的查询?

3 个答案:

答案 0 :(得分:1)

以下是一种使用order bylimit的方法:

select t.price
from table t
where t.date in ('0000-00-00', @date)
order by t.date desc
limit 1;

请注意,我将参数名称从date更改为@date,以区别于具有相同名称的列。

答案 1 :(得分:0)

语法应该表table.field(例如table.date),而在您的示例中,您有field.field(price.date)。

尝试:

select price from table where (table.date='{$date}' or table.date='0000-00-00')

请注意$date是一个变量(假设您使用PHP)。如果您不使用PHP,则不能在此处将date写为变量,但可以使用@date

答案 2 :(得分:0)

获取要搜索的字段的值。请将其设为$ date_search。

if(!empty($date_search)) {
  $sql = 'select price from table where date ='.$date_search;
  mysql_query($sql);
}
else {
 $sql = 'select price from table where date ="0000-00-00"';
 mysql_query($sql);
}