【开源中国 APP 全新上线】“动弹” 回归、集成大模型对话、畅读技术报告”
我在ORACLE数据库下有一句SQL语句:
DELETE FROM TABLE_1 A
WHERE A.PERIOD < ABS(SELECT SYSDATE-B.TIME)
FROM TABLE_1 B
WHERE A.ID1=B.ID1 AND A.ID2=B.ID2)*24*60*60;
MYSQL 5.5 下无法执行,报语法错误。
表结构:
TABLE_1: ID1 INT;
ID2 INT;
PERIOD INT;
TIME DATETIME;
求大侠解救!!
To be frank:
你现在更换数据库到PG,可能比你解决mysql 内生问题更节约时间.
很多问题已经被证明是无法解决的.
你可以评估一下成本. 如果用enterpriseDB可以兼容90%以上的oracle操作.
有很多集合运算,涉及差,嵌套, 在mysql是没有办法完成的.
更正一下SQL语句,少打了两个括号
DELETE FROM TABLE_1 A
WHERE A.PERIOD < ABS((SELECT SYSDATE-B.TIME
FROM TABLE_1 B
WHERE A.ID1=B.ID1 AND A.ID2=B.ID2)*24*60*60);
引用来自“xinzaibing”的答案
更正一下SQL语句,少打了两个括号
DELETE FROM TABLE_1 A
WHERE A.PERIOD < ABS((SELECT SYSDATE-B.TIME
FROM TABLE_1 B
WHERE A.ID1=B.ID1 AND A.ID2=B.ID2)*24*60*60);
引用来自“大家都叫我小扈”的答案
引用来自“xinzaibing”的答案
更正一下SQL语句,少打了两个括号
DELETE FROM TABLE_1 A
WHERE A.PERIOD < ABS((SELECT SYSDATE-B.TIME
FROM TABLE_1 B
WHERE A.ID1=B.ID1 AND A.ID2=B.ID2)*24*60*60);
我还是感觉不太对 from 语句后面我感觉应该再写点东西 类似于 FROM table_1 A,table_1 B之类的
引用来自“xinzaibing”的答案
更正一下SQL语句,少打了两个括号
DELETE FROM TABLE_1 A
WHERE A.PERIOD < ABS((SELECT SYSDATE-B.TIME
FROM TABLE_1 B
WHERE A.ID1=B.ID1 AND A.ID2=B.ID2)*24*60*60);
这个SQL语句功能是:计算当前时间和表里的time字段时间戳的秒数差值,看是否大于period,大于的话就把这条数据删掉
如果是这样的需求,何必那么麻烦啊, delete from A where A.PERIOD < ABS(now() - A.TIME)) 不行吗?