创建一个 MySQL 函数来进行简单的插入
Creating a MySQL function to make simple INSERTS
具有以下未从任何其他查询中获取的输入...
(891,892,903,993,1008)
我想为每个(891
、892
等)创建以下 INSERT
(XXXX
实际值)
INSERT INTO myTable (id, name)
SELECT
id,
name
FROM myTable
WHERE exp_id = XXXX AND cntr_id <> (SELECT id from plnt where id_emp = XXXX);
我怎样才能创建一个函数让所有这些都排成一行,而不是像下面这样一个一个地做?
WHERE exp_id = 891 AND cntr_id <> (SELECT id from plnt where id_emp = 891);
然后
WHERE exp_id = 892 AND cntr_id <> (SELECT id from plnt where id_emp = 892);
etc.etc.
提前致谢。
您不需要功能(而且它们并不像您认为的那样工作)。但是可以加入table来消除子查询。
您可以这样重写您的查询:
INSERT INTO myTable (id, name)
SELECT
id,
name
FROM your_table /*you were missing the from clause btw*/
LEFT JOIN plnt ON your_table.exp_id = plnt.id_emp
WHERE exp_id IN (891,892,903,993,1008) AND cntr_id <> plnt.id
具有以下未从任何其他查询中获取的输入...
(891,892,903,993,1008)
我想为每个(891
、892
等)创建以下 INSERT
(XXXX
实际值)
INSERT INTO myTable (id, name)
SELECT
id,
name
FROM myTable
WHERE exp_id = XXXX AND cntr_id <> (SELECT id from plnt where id_emp = XXXX);
我怎样才能创建一个函数让所有这些都排成一行,而不是像下面这样一个一个地做?
WHERE exp_id = 891 AND cntr_id <> (SELECT id from plnt where id_emp = 891);
然后
WHERE exp_id = 892 AND cntr_id <> (SELECT id from plnt where id_emp = 892);
etc.etc.
提前致谢。
您不需要功能(而且它们并不像您认为的那样工作)。但是可以加入table来消除子查询。
您可以这样重写您的查询:
INSERT INTO myTable (id, name)
SELECT
id,
name
FROM your_table /*you were missing the from clause btw*/
LEFT JOIN plnt ON your_table.exp_id = plnt.id_emp
WHERE exp_id IN (891,892,903,993,1008) AND cntr_id <> plnt.id