[Pg/My] SQL сниппеты

Категория: / Mine блог / PHP (LAMP)

Postgresql



Замена в тексте

UPDATE authors SET city = REPLACE(city, 'Salt', 'Olympic');
UPDATE documents SET body = REPLACE(body, '542-1177', '(495) 542-4977') WHERE title LIKE 'example%';


Случайное число

rand() AS random
ORDER BY random


Работа с датами

SELECT date_part('epoch',now()) AS unixtime;   
SELECT extract('epoch' FROM now()) AS unixtime;
SELECT '2001-01-01'::timestamp + '1 year'::interval;
--where date is unixtime
WHERE date >= date_part('epoch', (to_timestamp('" . date('d.m.Y') . " 19:00', 'DD.MM.YYYY HH:MI') - '1 day'::interval))
SELECT to_timestamp('2002.11.03 04:16:00', 'YYYY.MM.DD HH24:MI:SS');
SELECT date_part('day', TIMESTAMP '2001-02-16 20:38:40'); --Result: 16
SELECT date_part('hour', INTERVAL '4 hours 3 minutes'); -- Result: 4
 


Limit

LIMIT $limit OFFSET $offset

На закуску

Имеется база данных:

 
CREATE TABLE authors
(
id serial NOT NULL,
name varchar(64) NOT NULL,
CONSTRAINT "pk authors" PRIMARY KEY (id)
);
 
CREATE TABLE books
(
id serial NOT NULL,
author_id int NOT NULL,
name varchar(255) NOT NULL,
published timestamp without time zone NULL, - если NULL, то книга еще не издана.
CONSTRAINT "pk books" PRIMARY KEY (id),
CONSTRAINT "fk books/authors"
FOREIGN KEY (author_id)
REFERENCES authors (id) ON UPDATE CASCADE ON DELETE CASCADE
);
 
CREATE UNIQUE INDEX "ix books" ON books (author_id, published);
 


 
+--------------------------------------------------------------------- ----------+
Надо вывести: | имя автора | название последней изданной книги | дата издания последней книги |
+--------------------------------------------------------------------- ----------+
 


То есть, написать запрос, который выводит всех авторов, у которых ИЗДАНО более двух книг и показать
последнюю изданную книгу каждого автора и дату ее издания.
Предполагается, что таблицы огромные, поэтому запрос ДОЛЖЕН быть максимально экономичным.

SELECT a.name, b.name, b.published
FROM books b
INNER JOIN
(
SELECT author_id, MAX(published) AS published
FROM books
WHERE published IS NOT NULL
GROUP BY author_id
HAVING COUNT(id) > 2
) AS x
ON x.author_id = b.author_id
AND x.published = b.published
INNER JOIN
authors a
ON a.id = x.author_id;



Mysql



Запрос тестирования производительности системы. Может использоваться для доса при недостаточной фильтрации входящих данных скриптом.

SELECT BENCHMARK(500000, MD5(rand()))

@author: surg30n
@date: Вторник, 23 Декабрь 2008


Комментарии : Нет


Комментировать:




Код подтверждения: *
Введите подтверждающий код, так же как он отображен на картинке.
Надоело разбирать числа на картинке? Зарегистрируся, докажи что ты не робот!

загрузка...

barolo . Где посмотреть? Весьма хороший bosch tka 6024. Bosch Tka 6024 Лосиноостровский Москва. . Объявления о продаже авто - грузовые перевозки. Грузоперевозки Москва обл.