0

私は2つのテーブルを持っています。

資産表

   |  AID  | NAME | 
   | 1234  | item1|

アイテムテーブル

   |  BID  | ITEM | 
   |       |      |

質問: 挿入したい同じデータが資産テーブルに存在する場合にのみ、項目テーブルにデータを挿入するにはどうすればよいですか? それとも可能ですか?資産テーブルのAID値(1234)が存在する場合にのみ、アイテムテーブルのBID値(1234)にのみ挿入できるとします。私はこれをやってみました:

INSERT INTO 'item'('BID') VALUES (1234) WHERE 'item'.BID='assets'.AID
4

3 に答える 3

1
INSERT INTO item (BID) SELECT assets.aid FROM assets WHERE aid = 1234;

複数の一致があり、複数の行を挿入したくない場合は、SELECT で DISTINCT を使用します。

また、データベースへの挿入を制限するだけの場合は、外部キー制約を使用してください。それができたら、条件付きで挿入する必要はありません。エイドが親テーブルにまだ存在していない場合は、挿入してデータベースの試行を失敗させます。

于 2012-10-17T00:49:13.867 に答える
0

動的SQLを使用して後で実行することもできますが、それは醜いです。IF条件付きを実行するだけです。レコードがValueに存在する場合は挿入を実行し、そうでない場合は実行しないでください。

次のようなものを試してください。

(SELECT Count(*) FROM Value WHERE BID = '1234') > 0
    --your insert--
于 2012-10-16T23:41:51.727 に答える
0

mysql ではサポートされていないため、このステートメントWHEREでは使用できません。INSERT部品を取り外すだけWHEREで動作するはずです。

ただし、データが他のテーブル (またはサブクエリ内) に存在するかどうかを個別に確認する必要があります。

于 2012-10-16T23:10:42.307 に答える