postgresql - 在可为空的引用上选择

标签 postgresql select foreign-keys

我有两个表 authors 和 styles 之间的关系。 每个作者都与一种风格相关联,在特殊情况下作者没有风格(IS NULL)。

将引用设置为 NULL 没有问题,但是进行查询以选择作者和样式时出现问题。

例如查询:

SELECT "authors"."id", "authors"."name", "styles"."name", "authors"."comments" FROM 
"authors" , "styles" WHERE "authors"."style" = "styles"."id"

只是忽略具有 NULL 样式的作者(正如预期的那样)。

我需要做一个选择,它还列出了具有 NULL 样式的作者,就像左连接所做的那样(由于某些原因我不能使用 LEFT JOIN)。

有没有不包含显式连接的解决方案?

最佳答案

最明显的解决方案是 LEFT OUTER JOIN。

参见:http://www.postgresql.org/docs/8.1/static/tutorial-join.html

如果您不想使用显式连接,您应该可以使用 UNION

SELECT "authors"."id", "authors"."name", "styles"."name", "authors"."comments" FROM 
"authors" , "styles" WHERE "authors"."style" = "styles"."id"
UNION
SELECT "authors"."id", "authors"."name", "", "authors"."comments" FROM 
"authors" WHERE "authors"."style" IS NULL

关于postgresql - 在可为空的引用上选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/388763/

相关文章:

mysql - 何时 CREATE TABLE AS SELECT 与 CREATE TABLE LIKE?

MySQL 试图删除所有不受外键约束的行

postgresql - Postgres 的大表建议

mysql - 为什么sequelize在没有实例的情况下无法调用increment?

MySQL SELECT WHERE CASE

javascript - 无法将选择选项设置为默认值

mysql - 如何截断一些表?

android - 房间复合主键链接到外键

postgresql - 如何重新启动被 "ctrl+z"停止的某些进度?

sql - 每次更改时如何选择列?