Select

如果列有值,則選擇列

  • May 28, 2016

我在表中有RegiNumEmpNumusers。如果 RegiNum 列具有值,則將其視為學生。如果填寫了 RegiNum,我想從該表中選擇名稱和 ID。我用了

select if(EmpNum is null,"",ID) as s_id from users where isActive=1;

這僅返回學生的 ID。我如何也可以選擇其他欄位?

這裡有幾個選項。一種是對每一列重複給定的結構:

select
 if(EmpNum is null,"",ID) as s_id,
 if(EmpNum is null,"",Name) as s_name,
 .. etc
from users
where isActive=1;

這將為表中的每一行返回一行,顯示員工的空字元串和學生的值。

如果目標是只返回學生,更好的解決方案是將過濾器放在 WHERE 子句中:

select
 ID as s_id,
 Name as s_name,
 .. etc
from users
where isActive=1
and RegiNum is not null;  -- students only

使用這種方法,更少的行從數據庫發送到應用程序。

引用自:https://dba.stackexchange.com/questions/139831