Как я могу перевести эти 2 запроса в postgresql?
CREATE TABLE `example` (
`id` int(10) unsigned NOT NULL auto_increment,
`from` varchar(255) NOT NULL default '0',
`message` text NOT NULL,
`lastactivity` timestamp NULL default '0000-00-00 00:00:00',
`read` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `from` (`from`)
) DEFAULT CHARSET=utf8;
Query:
SELECT *
FROM table_1
LEFT OUTER JOIN table_2 ON ( table_1.id = table_2.id )
WHERE (table_1.lastactivity > NOW()-100);
Использование:
SELECT *
FROM table_1 t1
LEFT JOIN table_2 t2 ON t2.id = t1.id
WHERE t1.lastactivity > CURRENT_TIMESTAMP - INTERVAL '100 days'
CURRENT_TIMESTAMP является стандартом ANSI и работает с Oracle, MySQL, Postgres, SQL Server...
Здесь преобразован оператор таблицы CREATE:
CREATE TABLE example (
id INTEGER PRIMARY KEY,
"from" VARCHAR(255) NOT NULL DEFAULT '0',
message text NOT NULL,
lastactivity timestamp DEFAULT NULL,
read INTEGER NOT NULL
)
Я ничего не могу найти о Postgres, позволяющем создавать наборы символов в таблице, только чтобы вы установили поддержку UTF8 с помощью ключевого слова UNICODE при создании базы данных:
CREATE DATABASE your_db WITH ENCODING 'UNICODE';
$ createdb -E UNICODE your_db --CLI version
Postgre, как и Oracle, использует последовательности для поведения AUTO_INCREMENT:
CREATE SEQUENCE example_seq START 1;
Затем вам нужно вызвать NEXTVAL ([ваше имя последовательности]) в инструкции insert для заполнения первичного ключа:
INSERT INTO example (id) VALUES (NEXTVAL(example_seq))
Я просто отправлю свой собственный ответ. Здесь ваш CREATE
:
CREATE TABLE "example" (
"id" serial PRIMARY KEY,
"from" varchar(255) NOT NULL DEFAULT '0',
"message" text NOT NULL,
"lastactivity" timestamp NULL DEFAULT NULL,
"read" integer NOT NULL
);
Обратите внимание, что serial
выполняет int(11) NOT NULL auto_increment
, а integer
используется вместо int
. Ваш запрос кажется прекрасным.
"from"
вместо отклонения MySQL от стандарта с обратными кавычками.