mysql语句,可以选择第一个非null或第一个整数值

时间:2012-07-24 18:03:11

标签: php mysql select

我的用户将选择一个初始年份,我希望mysql从第一年的coloumn中选择值(比如1990),但如果没有初始年份的值(1990年),它应该选择第一个可用的价值(比如1996年)

在这种情况下我应该尝试选择第一个非空值,但是在我的数据库中而不是null中,我对所有不可用的值都有一个“ - ”。

我想我是狂尝试do-while循环,其变为无限....

do{
$sql="SELECT `$cityb` FROM data WHERE year=$initialyear";
$result = mysql_query($sql) or die('Query failed: ' . mysql_error());
if ($result) {
  while ($row = mysql_fetch_assoc($result)) {
      $valuei=$row["$cityb"];
      }

}         

$initailyear++;
}
while($value == "-"); //till when intial value is "-" (i.e no value)

当找到非“ - ”值时,此循环应该结束。但它永远不会结束。 所以必须有一个更好的选择,而不是使用这个愚蠢的循环。

2 个答案:

答案 0 :(得分:1)

SELECT stuff FROM data 
WHERE CONVERT(year, UNSIGNED INTEGER) >= 1990 
  AND year != '-' 
ORDER BY year 
LIMIT 1;

(未测试的)

答案 1 :(得分:0)

如果您想放弃“ - ”方式,还有“非空”方法。

select something from data where (year=1996) and (year is not null)

如果什么都没有回来(可以用mysql_num_rows == 0来检查,或者只是在内部“if”上使用“else”):

select something from data where year is null order by something_else asc limit 0, 1

进行两次查询而不是循环。