首页 > 解决方案 > 在 INSERT 条件下循环

问题描述

我是 sql 新手,我不清楚下一步该怎么做:我有代码:

INSERT INTO table1 (val1, val2)
   SELECT table2.val1, table2.val2
FROM table2
   WHERE NOT EXISTS (
   SELECT count FROM table_log 
   WHERE event_id = table2.id)
   AND table2.type = 'user' -- AND table2.type = 'admin'
   AND table2.size1 > 4 -- AND table2.size2 > 2 (if user admin)

我需要更改此查询以运行条件AND table2.type = 'admin',这意味着table2.val1, table2.val1会有所不同,条件也AND table2.size1 > 4应该更改为AND table2.size2 > 2

当然,我可以使用不同的值运行此查询 2 次,但也许可以在一个查询中执行

标签: sqlpostgresql

解决方案


您可以简单地修改WHERE子句以一次性实现此目的:

INSERT INTO table1 (val1, val2)
   SELECT table2.val1, table2.val2
FROM table2
   WHERE NOT EXISTS (
   SELECT count FROM table_log 
   WHERE event_id = table2.id)
     AND (   (table2.type = 'user' AND table2.size1 > 4)
          OR (table2.type = 'admin' AND table2.size2 > 2)
         )

推荐阅读