将mysql查询转换为postgresql

将mysql查询转换为postgresql,mysql,postgresql,Mysql,Postgresql,这个查询在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_t

这个查询在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));

除非我遗漏了一些非常明显的东西,否则我认为不需要临时表

下面应该返回完全相同的结果(除非临时表涉及到一些MySQL魔术)


(我认为MySQL也应该如此)

除非我遗漏了一些非常明显的东西,否则我认为没有必要使用临时表

下面应该返回完全相同的结果(除非临时表涉及到一些MySQL魔术)


(我认为这同样适用于MySQL)

忽略在MySQL中起什么作用?忽略关键字告诉MySQL放弃任何重复记录而不生成错误如果您在前一行删除临时表,它怎么可能包含行?您可以删除该表,重新创建它,并用一行填充它(其中shared获取值0,id=1101)。这背后的意图是什么?我觉得临时表一点也不必要。IGNORE在MySQL中起什么作用?IGNORE关键字告诉MySQL放弃任何重复记录而不生成错误如果您在前一行删除临时表,它怎么可能包含行?您可以删除该表,重新创建它,并用一行填充它(其中shared获取值0,id=1101)。这背后的意图是什么?我觉得临时表一点也不必要。
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);