表MS_GENERAL 
KEY_TYPE        KEY_VALUE KEY_NAME   kEY_DESC
CURRENCY     02 RMB 人民币
CURRENCY     03 JPY 日币
CURRENCY     04 EUR 欧元SQL:SELECT c.*
  FROM [TB_CWB] c
left join MS_GENERAL g
on g.[KEY_VALUE]=c.PRICE_CUR
where g.[KEY_TYPE]='CURRENCY'TB_CWB 为运单表
MS_GENERAL 为字典表 含有货币种类字段记录运单表中含与货币关联的字段PRICE_CUR 但PRICE_CUR值可能为NULL之上的SQL语句只将PRICE_CUR不为NULL的信息列出来了,如何才能列出所有的

解决方案 »

  1.   

    --where 改为 and ,如下:
    SELECT c.*
    FROM [TB_CWB] c
    left join MS_GENERAL g
    on g.[KEY_VALUE]=c.PRICE_CUR
    and g.[KEY_TYPE]='CURRENCY'
      

  2.   

    SELECT c.* FROM [TB_CWB] c left join MS_GENERAL g on g.[KEY_VALUE]=c.PRICE_CUR and g.[KEY_TYPE]='CURRENCY'
      

  3.   


    SELECT c.*
      FROM [TB_CWB] c
    left join MS_GENERAL g
    on g.[KEY_VALUE]=c.PRICE_CUR
    where g.[KEY_TYPE]='CURRENCY'
    SELECT c.*
      FROM [TB_CWB] c
    left join MS_GENERAL g
    on g.[KEY_VALUE]=c.PRICE_CUR and g.[KEY_TYPE]='CURRENCY'是有区别的,看看SQL的逻辑执行顺序,记得用这个题还面试过其他人,太多不会的了~