1

私は次のクエリを持っています:

select count(*)
FROM
    cumul AS t1,
    cumul AS t2
WHERE
    t1.id+1 = t2.id
and
    t2.spec_datetime-t1.spec_datetime < 0.001
and
    t1.id < 100000
and
    t1.v1-t2.v1 = 0
and
    t1.v2-t2.v2 =0;

同じレコードを次のように削除したい:

DELETE FROM cumul AS t1, cumul AS t2
WHERE
    t1.id+1 = t2.id
and
    t2.spec_datetime-t1.spec_datetime < 0.001
and
    t1.v1-t2.v1 = 0
and
    t1.v2-t2.v2 = 0;

私は得る:

エラー1064(42000):SQL構文にエラーがあります。1行目の「ASt1、cumul AS t2 WHERE t1.id + 1 = t2.id and t2.spec_datetime-t1.spec_datetime <」の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。

どうすればクエリを修正できますか?

4

2 に答える 2

1
cumul AS t1、cumulASt2からt1を削除します  
       ^^
FROMの前にエイリアスを追加するだけです

だからこれを試してみてください:

DELETE t1 FROM cumul AS t1, cumul AS t2
WHERE
    t1.id+1 = t2.id
and
    t2.spec_datetime-t1.spec_datetime < 0.001
and
    t1.v1-t2.v1 = 0
and
    t1.v2-t2.v2 = 0;

MySQL::13.2.2を参照してください。詳細については、 DELETE構文を参照してください。

于 2012-08-22T05:01:16.180 に答える
0

テーブルリスト内のどのテーブルから削除するかを指定する必要があります(この場合は同じテーブルですが)。

DELETE t1 FROM cumul AS t1, cumul AS t2...

http://dev.mysql.com/doc/refman/5.0/en/delete.html

于 2012-08-22T04:40:28.143 に答える