以下に示すように、2つのテーブルを作成し、値を挿入しました。
表1
create table maxID (myID varchar(4));
insert into maxID values ('A001');
insert into maxID values ('A002');
insert into maxID values ('A004');
insert into maxID values ('A003');
表 2
create table maxID2 (myID varchar(4) PRIMARY KEY);
insert into maxID2 values ('A001');
insert into maxID2 values ('A002');
insert into maxID2 values ('A004');
insert into maxID2 values ('A003');
クエリを実行すると
SELECT myId, @rowid:=@rowid+1 as myrow
FROM maxID, (SELECT @rowid:=0) as init
ORDER BY myrow desc
LIMIT 1;
次のように出力されます
+++++++++++++
myid + myrow
+++++++++++++
A003 + 4
+++++++++++++
と
クエリを実行すると
SELECT myId, @rowid:=@rowid+1 as myrow
FROM maxID2, (SELECT @rowid:=0) as init
ORDER BY myrow desc
LIMIT 1;
次のように出力されます
+++++++++++++
myid + myrow
+++++++++++++
A004 + 4
+++++++++++++
2 つのテーブルの違いは、2 番目のテーブルに myID があることPRIMARY KEY
です。
www.sqlfiddle.comで上記のデータ/結果を表示できます。
私の質問は
クエリが同じなのに 2 つの異なる結果が得られるのはなぜですか?
注:この質問は、私の古い質問Getting last record from mysqlに少し関連しています。ここで、ほとんど答えが得られ、Yakは行の順序が保証されていないことを通知しました。:(