1

私のユーザーは最初の年を選択します。私は mysql に最初の年 (たとえば 1990 年) の列から値を選択させたいのですが、その最初の年 (1990 年) の値がない場合は、最初に利用可能な値を選択する必要があります (たとえば、1990 年)。 1996年と言う)

この場合、null 以外の最初の値を選択する必要がありますが、データベースでは、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)

このループは、「-」以外の値が見つかったときに終了する必要があります。しかし、それは決して終わりません。したがって、この愚かなループを使用する代わりに、より良い代替手段が必要です。

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

「-」の方法を削除したい場合は、「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

ループの代わりに 2 つのクエリを作成します。

于 2012-07-24T18:19:36.410 に答える