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


mysql statment that can select the first non null or first integer value

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

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

我想我疯了,试着做一个无限循环。。。。

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)

当找到非"-"值时,此循环应结束。但它永远不会结束。因此,必须有一个更好的替代方案,而不是使用这个愚蠢的循环。

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

(未测试)

如果你想放弃"-"的方式,还有"不是null"的方法。

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

它生成两个查询而不是一个循环。