2009-04-06 10 views
0

私はMySQLを使用しています。 が別のテーブルに存在しない場合、いくつかのレコードをテーブルに挿入したいのですが。だから私はこのような何かを実行したい:別のテーブルの既存の値に応じてMySQLテーブルにレコードを挿入する

INSERT INTO sales (name, id) 
SELECT name, id FROM sales_h 
WHERE name AND id NOT IN (SELECT name, id FROM T_sales); 

問題は、MySQLは、構文のこの種(WHERE句とは何か...)私はCONCATを使用してみましたが、結果なしではできないことです。

名前とNOT IN idは...あなたはそれぞれに別々の句が必要WHERE

答えて

0

ためON DUPLICATE句に見えるかもしれませんあなたが言うことはできません。しかし、テーブルT_salesの主キーとしてIDを持っていますか?もしそうなら、それはあなたがチェックする必要があるすべて、同様のSP何か:他の人の答えから

INSERT INTO sales (name, id) 
(SELECT name, id FROM sales_h WHERE id NOT IN (SELECT id FROM T_sales)); 

EDIT

うーん、それは彼らがより:-)

知っているように見えるように私を無視するのが最善かもしれません
1
INSERT 
INTO sales (name, id) 
SELECT name, id 
FROM sales_h 
WHERE (name, id) NOT IN 
     (
     SELECT name, id 
     FROM t_sales 
     ) 
0

問題はあなたのWHEREです。

あなたが読んでいるわけではありません。あなたは "WHERE(名前とID)NOT IN(...)"としてそれを読んでいるのに対し、 "WHERE name(ヌルではない)AND(ID NOT IN(...))"と読みます。あなたが私が何を意味するかを知っていれば。これに

変更:ROW(name, id) NOT IN (SELECT name, id FROM T_sales);

1

あなたはを試してみましたがsyntaxをEXISTS?

INSERT INTO sales (name, id) 
SELECT name, id 
FROM sales_h 
WHERE NOT EXISTS (SELECT * FROM T_sales WHERE T_sales.name = sales_h.name AND T_sales.id = sales_h.id); 
1

MySQLは変数のようにタプルを使用することができます:

これはあなたの文です:

INSERT INTO sales (name, id) 
SELECT name, id FROM sales_h 
WHERE name AND id NOT IN (SELECT name, id FROM T_sales); 

問題は、 "名前とID" です。個人的に

INSERT INTO sales (name, id) 
SELECT name, id FROM sales_h 
WHERE (name, id) NOT IN (SELECT name, id FROM T_sales); 

が、私は二つの理由から、このあまり好きではない:タプルの中にそれを回し変数としてタプルが動作しない(あるいは動作が異なります)他のRDBMS上、及びINは中にパフォーマンスが低下する傾向があります多くの状況で、私はINを使用しないように習慣をつけることが好きです。

INSERT INTO sales (name, id) 
SELECT name, id FROM sales_h a 
WHERE not exists (
SELECT * 
FROM T_sales b 
where b.id = a.id and b.name = a.name); 
0
INSERT INTO table_name(column1, column2) SELECT "value one", "value two" FROM DUAL 
WHERE NOT EXISTS(
    SELECT column1 FROM table_name 
    WHERE column1 = "value one" 
    AND column2 = "value two" LIMIT 1 
) 
:ジョニー-D-カノ-leftware状態として

(私は彼をupmoddedました)、私は存在していないところ使用したいです

関連する問題