Преобразование запроса MySQL в postgresql - PullRequest
1 голос
/ 25 июля 2011

Этот запрос прекрасно работает в mysql, но я пытаюсь запустить его в postgresql, и он жалуется на ключевое слово IGNORE, которое не является ключевым словом pg. Я не уверен, как изменить его, чтобы он делал то же самое под pg?

DROP TABLE IF EXISTS ct_tmp_u1101_t9;
CREATE TEMPORARY TABLE ct_tmp_u1101_t9(id int primary key, shared int default 0) IGNORE (SELECT 1101 as id);
SELECT shared from ct_tmp_u1101_t9
UNION (SELECT cust_user2role.userid AS userid FROM cust_user2role
INNER JOIN cust_users ON cust_users.id = cust_user2role.userid
INNER JOIN cust_role ON cust_role.roleid = cust_user2role.roleid 
WHERE cust_role.parentrole like 'H1::H2::H3::H4::H5::%')
UNION (SELECT groupid FROM cust_groups where groupid in (3,4,2,1005));

1 Ответ

1 голос
/ 25 июля 2011

Если я не пропускаю что-то абсолютно очевидное, я не вижу необходимости в таблице временных значений.

Следующие данные должны возвращать точно такой же результат (если только с временными таблицами не связана какая-то магия MySQL)

SELECT 0 as shared
UNION 
SELECT cust_user2role.userid AS userid 
FROM cust_user2role
   INNER JOIN cust_users ON cust_users.id = cust_user2role.userid
   INNER JOIN cust_role ON cust_role.roleid = cust_user2role.roleid 
   WHERE cust_role.parentrole like 'H1::H2::H3::H4::H5::%'
UNION 
SELECT groupid 
FROM cust_groups 
WHERE groupid IN (3,4,2,1005);

(И я думаю, что то же самое должно работать с MySQL)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...