0

こんにちは、アプリケーションを更新または挿入したいのですが、エラーが表示されます。更新またはクエリを削除すると機能することを知っている

UPDATE OR INSERT  INTO stat_alert(`DAT`,`provider`,`CI`,`cell`,`BSC`,`cmts`,`nbr`,`TYPE`)
     SELECT CC.DAT,CC.provider,CC.CI,CC.cell,CC.BSC,CC.cmts, CONCAT(CC.C,'C, ',MM.M ,'M') AS nbr,'C' AS TYPE  FROM 
     (SELECT DAT,provider,CI,cell,BSC,cmts,COUNT(*) AS C FROM alertes_bss2 WHERE Criticity = 'C' GROUP BY cell,Criticity ) AS CC,
     (SELECT DAT,provider,CI,cell,BSC,cmts,COUNT(*) AS M FROM alertes_bss2 WHERE Criticity = 'M' GROUP BY cell,Criticity) AS MM WHERE MM.cell = CC.cell
      UNION SELECT DAT,provider,CI,cell,BSC,cmts, CONCAT(COUNT(*) ,'C') AS nbr,'C' AS TYPE FROM alertes_bss2 WHERE Criticity = 'C' AND cell NOT IN
       (SELECT cell FROM alertes_bss2 WHERE Criticity = 'M') GROUP BY DAT,provider,CI,cell,BSC,Criticity 
      UNION SELECT DAT,provider,CI,cell,BSC,cmts, CONCAT(COUNT(*) ,'M') AS nbr,'M' AS TYPE FROM alertes_bss2 WHERE Criticity = 'M' AND cell NOT IN 
      (SELECT cell FROM alertes_bss2 WHERE Criticity = 'C') GROUP BY DAT,provider,CI,cell,BSC,Criticity;

私はこのエラーがあります:

Query: UPDATE OR INSERT INTO stat_alert(`DAT`,`provider`,`CI`,`cell`,`BSC`,`cmts`,`nbr`,`TYPE`) SELECT CC.DAT,CC.provider,CC.CI,CC.cell...

Error Code: 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OR INSERT  INTO stat_alert(`DAT`,`provider`,`CI`,`cell`,`BSC`,`cmts`,`nbr`,`TYPE' at line 1

Execution Time : 0 sec
Transfer Time  : 0 sec
Total Time     : 0.003 sec
---------------------------------------------------

誰が私を助けることができます

4

3 に答える 3

2

多分あなたは探していREPLACEますか?リンク

REPLACE は INSERT とまったく同じように機能しますが、テーブル内の古い行が PRIMARY KEY または UNIQUE インデックスの新しい行と同じ値を持つ場合、新しい行が挿入される前に古い行が削除される点が異なります。

于 2012-11-08T11:36:27.643 に答える
0

UPDATEとINSERTを一緒に使用することはできません..............。

データを更新する必要があるのか​​、データを挿入する必要があるのか​​をコードで処理する必要があります。

于 2012-11-08T11:33:38.043 に答える
0

UPDATE OR INSERTMysqlでは使用できません。レコードがデータベースに存在するかどうかを確認する必要があります。存在する場合は、UPDATEそうでなければ使用してINSERTください。

于 2012-11-08T11:40:13.077 に答える