簡體   English   中英

空值和非空值

[英]Null as well as not Null Values

我想通過比較u.fld_id = ct.fld_teacher_id來獲取老師的信息,如果ct.fld_teacher_id為null,我將顯示尚未分配。 但是ct.fld_teacher_id為null的行在執行時不會顯示。

這是我的查詢。

  SELECT ct.fld_id as id, ct.fld_serial, ct.fld_city, ct.fld_venue_name, 
        ct.fld_start_time, ct.fld_end_time, 
        ct.fld_duration, ct.fld_available_seats, 
        ct.fld_course_price, ct.fld_status,
        c.fld_name, u.fld_first_name, u.fld_last_name,
        ct.fld_status, ct.fld_teacher_id, ct.fld_training_name,
        ct.fld_class, ct.fld_level, ct.fld_is_fixed, tt.fld_name as training_type_name
   FROM tbl_course_training as ct, tbl_users as u,
        tbl_courses as c, tbl_training_types as tt
   WHERE c.fld_id = ct.fld_course_id AND u.fld_id = ct.fld_teacher_id AND 
       ct.fld_teacher_id = 'NULL' AND tt.fld_id = ct.fld_training_type_id 

我不知道結構便無法整理您的查詢。 但是,我很少注意到。

  • 您不能將空值作為ct.fld_teacher_id = 'NULL'進行比較(空值不是字符串

     ct.fld_teacher_id is null -- Correct way 
  • 如果即使ct.fld_teacher_id is null時也需要選擇

     u.fld_id = isnull(ct.fld_teacher_id, u.fld_id) --or (sql-server) u.fld_id = ct.fld_teacher_id or ct.fld_teacher_id is null --(my sql or sql-server) u.fld_id = COALESCE(ct.fld_teacher_id, u.fld_id) --(my sql) 
  • 還要避免使用舊的聯接表的方法,例如From Table1 t1, Table2 t2

     From Table1 t1 JOIN Table2 t2 On t1.Key = t2.Key --Correct way 
  • 我認為您需要在此處添加一些Left Join 檢查此鏈接以了解Sql Joins的工作方式

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM