1

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

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

我想我很生气尝试一个无限循环的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)

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

4

2 回答 2

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

(未经测试)

于 2012-07-24T18:06:23.127 回答
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

这会进行两个查询而不是循环。

于 2012-07-24T18:19:36.410 回答