sql - Postgresql:如何删除 table_1 中与 table_2 不匹配的条目
问题描述
假设我有两张桌子:
"table_1"
有columns "user_id","username","age"
和
"table_2"
有columns "m_id","username","message"
现在有些用户不存在了,所以我想删除每个"table_2"
包含 a 的"username"
条目"table_1"
以下命令在 POSTGRESQL 中有效吗?
DELETE FROM table_2 WHERE username NOT IN
(SELECT username FROM table_1 WHERE username IS NOT NULL)
我需要WHERE username IS NOT NULL
在命令末尾吗?
以下命令起到了作用:
DELETE FROM table_2 t2
WHERE NOT EXISTS
(SELECT 1 FROM table_1 t1
WHERE t1.username = t2.username);
解决方案
如果您担心NULL
值,请使用EXISTS
而不是IN
:
DELETE FROM table_2 t2
WHERE NOT EXISTS
(SELECT 1 FROM table_1 t1
WHERE t1.username = t2.username);
推荐阅读
- php - 如何使用 if-else 条件将 Json 返回到表中使用 trHtML +=
- php - 为 PHP 包装 C 的 Swig:参数中的类型错误,预期为 SWIGTYPE_p_p_double
- numpy - 如何使用 numpy.fft 获得正确的相位值
- go - 尝试使用 Golang/Cloud Function 将数据存储在 google firestore 中时如何修复“身份验证握手失败”
- javascript - 按住 4 个键后多个键输入失败
- android - 为什么任务对于firebase身份验证不成功
- python - Django Simple JWT non_field_errors":["没有找到具有给定凭据的活动帐户]
- python - 将多个 zip 对象连接到一个列表中
- laravel - 我已将头像列添加到生成的用户表中,如何为头像列设置默认值
- clojure - 如何将地图列表转换为地图的嵌套地图?