我有一個包含subject_id列的主題表。在表中,我有一行具有subject_id空值,subject_id但具有不同的值。
我正在尋找可以根據 subject_id 獲取資料的單個查詢。
Select * from subject where subject_id = x;
如果沒有找到 wrt x 的資料,則它應該回傳 subject_id = null 的行
uj5u.com熱心網友回復:
一般來說,這對于表格來說是一種糟糕的模式。從長遠來看,NULL 作為主鍵值只會給你帶來痛苦。當您的查詢與其他行不匹配時,使用 NULL 鍵行作為默認值會導致意外的奇怪行為。
最簡單的方法是簡單地將 NULL 行包含為任何查詢的最后一行,然后只獲取第一行。但這僅在您的查詢最多只能回傳一個有效結果時才有效。
select *
from subject
where subject_id = ? or subject_id is null
order by subject_id asc nulls last
對于主題中的默認/占位符行,NULL PK 的最大問題可能是,在其他任何具有 NULL subject_id 的地方都不能簡單地使用 x.subject_id = y.subject_id 加入該行。
如果你真的需要這樣一行,我建議使用 -1 而不是 NULL 作為“不存在”的值。這將使您的生活更加輕松,特別是如果您需要加入它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/489462.html
