我正在处理这样的查询:
SELECT * FROM requests where (id,langid) IN (SELECT nid,langid FROM node)
我的问题是
这在mysql和postgresql中有效吗?
这是标准SQL所支持的吗?
我知道这不是最好的解决方案,加入是可行的,但我对此并不感兴趣。
从MySQL迁移到PostgreSQL。
DROP PROCEDURE IF EXISTS prepend;
DELIMITER $$
CREATE PROCEDURE prepend
(
IN inParam VARCHAR(255),
INOUT inOutParam INT
)
BEGIN
DECLARE z INT;
SET z = inOutParam + 1;
SET inOutParam = z;
SELECT inParam;
SELECT CONCAT('zyxw', inParam);
END;$$
DELIMITER ;
CALL pre
我试图为开源数据库(如MySQL、PostgreSQL、SQLite和其他数据库)找到有关正确的PostgreSQL的信息。它们是否存在预先组装的列表,还是我只需要梳理每个数据库引擎的文档(在某些情况下猜测正确的实现?ALTER TABLE vs CREATE INDEX)
例如,到目前为止,我为MySQL提供了以下(部分)列表:
CREATE TABLE `%s` (...);
DROP TABLE IF EXISTS `%s` %s;
ALTER TABLE `%s` RENAME TO `%s`;
ALTER TABLE `%s` ADD COLUMN %s;
ALTER TABLE
我想根据另一个表(target)中的值更新一个表(source)。但是我正在寻找一种语法,它可以在4个主要的数据库中工作-- Oracle、MySQL、PostgreSQL、MySQL。
到目前为止,我还没有找到这样一个统一的语法。我是错过了这样的语法,还是真的没有这样的语法?
甲骨文
UPDATE target t
SET (t.col1, t.col2) = (SELECT s.col1, s.col2
FROM source s
WHERE s.key = t.key)
MS Server /
我第一次尝试来自MySQL的PostgreSQL。在我们的Rails应用程序中,我们有几个使用SQL的位置,如下所示:
SELECT * FROM `currency_codes` ORDER BY FIELD(code, 'GBP', 'EUR', 'BBD', 'AUD', 'CAD', 'USD') DESC, name ASC
没过多久就发现这在PostgreSQL中是不支持/不允许的。
有没有人知道如何在PostgreSQL中模拟这种行为,或者我们必须在代码中进行排序?