我有一个数据库表,如:
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')
但它不起作用。
如何编写正确的查询?
答案 0 :(得分:1)
以下是一种使用order by
和limit
的方法:
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);
}