PostgreSQL的更简单,更短,更快
DISTINCT ON:
SELECt DISTINCT ON (a.id) a.id, a.name, a.date, b.pre1, b.pre2FROM table_a aLEFT JOIN table_b b USING (id)ORDER BY a.id, b.sort
此紧密相关答案中的详细信息,解释,基准和链接。
我使用
LEFT JOIN,这样不会删除
table_a没有匹配行的行
table_b。
旁注:
虽然在PostgreSQL中被允许,但
date用作列名是不明智的。在每个SQL标准中,它都是保留字,在PsotgreSQL中,它是类型名。
命名ID列也是一种反模式
id。没有描述性,也没有帮助。一种(多种)可能的命名约定是在表作为主键的情况下对其进行命名
table_a_id。引用它的外键使用相同的名称(如果没有其他自然名称优先)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)