我的用户将选择一个初始年份,我希望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)
当找到非“ - ”值时,此循环应该结束。但它永远不会结束。 所以必须有一个更好的选择,而不是使用这个愚蠢的循环。
答案 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
进行两次查询而不是循环。