在一个SQL查询(Zapier)中组合INSERT和SELECT

时间:2017-09-19 10:11:24

标签: mysql sql zapier

如果没有指定唯一键的条目或什么都不做,我正在制作Zapier任务以在MySQL中插入条目。

我需要尝试在某个表中插入新行,但如果新条目的电子邮件已经INSERT,则会默默地发出警告(由于IGNORE关键字)。

INSERT IGNORE users(email, hashed_password)
VALUES ('<email>`, '<some_hashed_password>')

但在这两种情况下,我的查询都没有返回任何内容,Zapier结束了此消息的任务:

enter image description here

问题:有没有办法让一个复杂的SQL命令将INSERTSELECT组合在一起,所以在一个查询中,我将从DB获得一些结果集,而不是空对象或无论INSERT返回什么?

P.S。这适用于MySQL:

INSERT IGNORE reporting.users(`email`, `password`)
VALUES ("test@test.ts", "test");
SELECT * FROM reporting.users as u WHERE u.email = "test@test.ts";

但这包含两个查询,这在Zapier中无效。

1 个答案:

答案 0 :(得分:1)

这是一个古老的问题,但是我今天正在努力解决同一问题。在尝试找到解决方案时,我遇到了这个qn,因此当我找到解决方案/解决方法时,我认为我会做一件体面的事并回发...

基于他们帖子中的红色“ Bargle”错误,我相信zmii一定一直在尝试使用MySQL自定义搜索查询。 Zapier必须具有查询的输出,否则将出错。我环顾四周,然后制作了自定义查询:

  

SELECT IFNULL( (SELECT employee_id FROM timesheets.employees WHERE employee_id = <Step 6 | sheet_data_id> LIMIT 1) ,0) AS result;基于所选的答案here。因此,如果找到,我的查询将输出一个雇员ID,否则将输出0。然后,我基于自定义查询的输出“结果”插入了一个Zapier PATHS步骤。如果结果大于0,则更新现有记录。如果它是0,那么我插入一条新记录。我怀疑我可以使用自定义查询代码来进行分支和更新/插入,但是我还没有尝试过,因为我还有其他事情要先尝试。

编辑 实际上,我不得不根据与Zapier here的交谈来修改此答案。我保留了原始答案,但隐藏了它。该语法有效,但仅当查询为SELECT查询时,才对INSERTUPDATE查询无效。有关详细信息,请参见链接问题的注释中的讨论。从本质上讲,目前无法通过Zapier MySQL自定义查询步骤执行插入或更新操作。