如何在sql developer中使用单个查询获取所需的数据



我有一个包含subject_id列的主题表。在表中,我有一行subject_id为null,而subject_id具有不同的值。

我正在寻找单个查询,我可以根据subject_id获取数据。

Select * from subject where subject_id = x;

如果没有找到w.r.t.x的数据,那么它应该返回subject_id = null的行

一般来说,这是一个非常糟糕的表模式。从长远来看,NULL作为主键值只会给您带来痛苦。当您的查询不匹配其他行时,使用null键行作为默认值将导致意外的奇怪行为。

最简单的方法是将NULL行作为任何查询的最后一行,然后只获取第一行。但是,只有当您的查询最多只能返回一个有效结果时,这才有效。

select *
from subject
where subject_id = ? or subject_id is null
order by subject_id asc nulls last

对于subject中的默认/占位符行,NULL PK可能最大的问题是,在其他任何地方,您都有一个NULL subject_id,不能简单地使用x.subject_id = y.subject_id连接到该行。

如果你真的需要这样的行,我建议使用-1而不是NULL作为"不存在"价值。这将使你的生活更容易,特别是如果你需要加入它。

相关内容

  • 没有找到相关文章

最新更新