2017-09-15 8 views
1

MySQLのテーブルを更新するPHPファイルがあります。ジョブが完了すると、完了したすべてのフラグが0から1に更新されます。最も低い主キー(ID)から始まるdone=0を照会する必要があります。ジョブが完了したら、done = 1を更新して次の行に移動します。私は、次の表を持っている:MySQLの単一行のクエリで値を取得

-------------------- 
| ID | test | done | 
-------------------- 
| 1 | test1| 0 | 
-------------------- 
| 2 | test2| 1 | 
-------------------- 
| 3 | test3| 0 | 
-------------------- 
| 4 | test4| 0 | 
-------------------- 
| 5 | test5| 1 | 
-------------------- 

私は次のクエリSELECT test FROM mytable WHERE done=0 ORDER BY id ASCを行うと、それは私に0のフラグを行っているすべてのテストを与える、しかし、私が最初に開始し、その最初の、そして移動を扱いたいです次のものへと順番に進みます。だから、最初の行だけを表示するクエリが必要です。これどうやってするの?

+3

クエリに「制限1」を追加してください – Fabricator

答えて

2

あなたのクエリはすでに昇順IDでソートされているため、正しいトラックにあります。あなたがする必要があるのは、最初の結果が存在する場合にのみ返すようにすることだけです。クエリの最後にLIMIT 1を追加してください:

SELECT test FROM mytable WHERE done=0 ORDER BY id ASC LIMIT 1 
関連する問題