0

具有以下未从任何其他查询中获取的输入...

(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);

提前致谢。

4

1 回答 1

1

你不需要一个函数(而且它们不像你想象的那样工作)。但是你可以加入表来消除子查询。

您可以像这样重写您的查询:

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 
于 2017-07-13T13:29:29.987 回答