sql - 在 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 次,但也许可以在一个查询中执行
解决方案
您可以简单地修改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)
)
推荐阅读
- react-native - React-Native fetch() 和请求最终出现网络错误
- qt - 如何自定义 QDialogButtonBox 按钮的背景颜色?
- python - Bert 标记化错误 ValueError:输入 nan 无效。应该是字符串、字符串列表/元组或整数列表/元组
- html - 如何将 flexbox 添加到 ngb-toast 的内容中
- ant - 如何在 Ant 脚本中创建 Javadoc 自定义标签
- laravel - 更改 Laravel 8 凭证匹配验证的错误键?
- mongodb - Mongoose 好友请求模型聚合
- image - 单击按钮时显示网络图像
- laravel - 在 laravel 中使用 tinker 函数
- python - Python - 熊猫,日期时间格式问题