我想创建一个与MySQL和PostgreSQL一起工作的通用查询。MySQL和PGSQL的通用查询
对于此查询,我需要选择3个表中的所有列,但结果需要在ID上具有不同的子句以消除重复的行。 实际上在数据库中,有6条记录,但只有3条是不同的: 其中一条出现3次,另一条出现2,最后一条出现。 多次出现的记录完全一样,我只想保留其中的一个。
这里是MySQL查询:
SELECT
*
FROM
table_1
INNER JOIN table_2
ON table_1.id = table_2.table_1_id
INNER JOIN table_3
ON table_2.table_3_id = table_3.id
WHERE
table_3.type = 'foo'
GROUP BY
table_1.id
这是PostgreSQL查询:
SELECT DISTINCT ON (table_1.id)
*
FROM
table_1
INNER JOIN table_2
ON table_1.id = table_2.table_1.id
INNER JOIN table_3
ON table_2.table_3_id = table_3.id
WHERE
table_3.type = 'foo'
我没有找到如何创建一个与MySQL和PostgreSQL一起工作的查询
为什么*?当table_2中有多个匹配记录可用于table_1中的值时,您需要哪些值?对“GROUP BY”使用ANSI“GROUP BY”和ANSI规则:对“SELECT”中列出的每一列,在“GROUP BY”中进行聚合或列表。 **你想要解决什么问题?** – Pred
Brut-force解决方案:'select * from(select table_1。*,(select_table from table_2 where table_1.id = table_2.table_1.id order by限制1)as t2_id,... from table_1)t内连接table_2 on(t.t2_id = table_2.id)...'但是不要试图写“通用”解决方案,因为你失去了大部分优点每个DBMS。改为创建存储函数,并以大多数与DBMS相关的有效方式对每个函数进行编码。 –
Abelisto