mysql - 删除 MySQL 和 PostgreSQL 的查询区别
问题描述
我正在从 MySQL 切换到 PostgreSQL,mysql 上的这个删除查询在 postgresql 中显示错误:
DELETE c FROM customers_vs_coupons c JOIN coupons d ON c.coupon_id=d.id WHERE d.company_id = ?1
ERROR: syntax error at or near "c"
LINE 1: DELETE c FROM customers_vs_coupons c JOIN coupons d ON c.cou...
^
SQL state: 42601
Character: 8
我可以通过将查询更改为
DELETE FROM customers_vs_coupons USING customers_vs_coupons AS c JOIN coupons AS d ON c.coupon_id=d.id WHERE d.company_id = 1;
但想知道为什么它会抛出错误?
解决方案
因为该 SQL 语法不符合 SQL 标准:
第 14 章第 7 节说:
14.7 <删除语句:搜索>
功能
删除表的行。
格式
<delete statement: searched> ::= DELETE FROM <target table> [ [ AS ] <correlation name> ] [ WHERE <search condition> ]
推荐阅读
- c++ - CGAL 没有计算完整的德劳内三角剖分
- linux - 重新连接(拨号 tcp [(IPv6 addr)]:443: connect: network is unreachable)
- adobe - 使用 Adobe Acrobat Pro 2017 自动扫描:有快捷键吗?
- angular - mat-nav-list 始终以项目为重点
- javascript - .trigger('change') 满足验证后不断刷新分页数据表
- node.js - 如何使用 webpack 为多个目标构建?
- java - 为什么 Build.VERSION.SDK_INT 显示不正确的数字?
- ios - 而委托要么是 nil 要么没有实现 peripheral:didUpdateValueForCharacteristic:error:?
- python - Python 中 lpsolve 的替代方案,用于快速设置和求解
- python - 如何使用 localId 在 firebase 中保存数据