mysql - 创建一个 MySQL 函数来进行简单的插入

标签 mysql mysql-function

具有以下输入,这些输入不是从任何其他查询中获取的...

(891,892,903,993,1008)

我想为每个( 891892 等)制作以下 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);
等等等等

提前致谢。

最佳答案

您不需要函数(并且它们并不像您想象的那样工作)。但您可以连接表来消除子查询。

您可以像这样重写查询:

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 

关于mysql - 创建一个 MySQL 函数来进行简单的插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45081318/

相关文章:

php - 为什么 "INSERT INTO SELECT"比插入慢?

php - 如何读取保存在mysql数据库中的pdf文件?

mysql - 带参数的MySQL函数出错

mysql - 使用 MySQL 函数或过程提取 SELECT 表达式

php - 为什么 PHP PDO DSN 是 MySQL 与 PostgreSQL 的不同格式?

php - Mysqli "Prepare statement"没有创建对象

mysql - "No Return Found"简单的mysql函数错误

c# - 调用存储过程忽略输出参数

mysql 函数在两个表上,innodb