我想创建一个与MySQL和PostgreSQL一起使用的通用查询。
对于此查询,我需要选择3个表中的所有列,但结果需要在ID上有一个distinct子句以消除重复行。 实际上在数据库中,有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一起使用的查询
答案 0 :(得分:1)
首先尝试获取第一个表的不同ID,然后将其余部分加入到它们中。
尽管如此,我仍然会得到table_1的一些随机值,如果有多个id,它们具有不同的值,而你没有指定你想要的值。
SELECT
table_1.*, table_2.*, table_3.*
FROM
(SELECT table_1.id FROM table_1 GROUP BY table_1.id) AS distinctIds
INNER JOIN table_1 ON table_1.id = distinctIds.id
INNER JOIN table_2 ON distinctIds.id = table_2.table_1_id
INNER JOIN table_3 ON table_2.table_3_id = table_3.id
WHERE
table_3.type = "foo"