我的用户将选择一个初始年份,我希望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
它生成两个查询而不是一个循环。