最大値に基づいて行を削除するように mySQL クエリを構成するにはどうすればよいですか。
私は試した
WHERE jobPositonId = max(jobPostionId)
しかし、エラーが発生しましたか?
最大値に基づいて行を削除するように mySQL クエリを構成するにはどうすればよいですか。
私は試した
WHERE jobPositonId = max(jobPostionId)
しかし、エラーが発生しましたか?
DELETE FROM table ORDER BY jobPositonId DESC LIMIT 1
使用する:
DELETE FROM TABLE t1
JOIN (SELECT MAX(jobPositonId) AS max_id FROM TABLE) t2
WHERE t1.jobPositonId = t2.max_id
重複がある場合、その値を持つすべての行が削除されることに注意してください。jobPositonId
1093 エラーの愚かな部分は、自己参照の間にサブクエリを配置することで回避できることです。
DELETE FROM TABLE
WHERE jobPositonId = (SELECT x.id
FROM (SELECT MAX(t.jobPostionId) AS id
FROM TABLE t) x)
UPDATE
&DELETE
ステートメントを使用する場合、MySQL は、更新されている同じテーブルへの最初のレベルのサブクエリがあるかどうかのみをチェックします。そのため、2 番目のレベル (またはより深いレベル) のサブクエリの代替として機能します。ただし、サブクエリのみをチェックしています。JOIN 構文は論理的に同等ですが、エラーは発生しません。
これは機能します:
SELECT @lastid := max(jobPositonId ) from t1;
DELETE from t1 WHERE jobPositonId = @lastid ;
データベースに 2 回アクセスする以外に、この手法に問題はありますか?
DELETE FROM `table_name` WHERE jobPositonId = (select max(jobPostionId) from `table_name` limit 1)
また
DELETE FROM `table_name` WHERE jobPositonId IN (select max(jobPostionId) from `table_name` limit 1)