select left(sub.subjectdesignameno,2) as subjectdesignameno  from acc_vouchdetail vd 
left outer join acc_subjectdesigname sub  on vd.subjectdesigname_id = sub.subjectdesigname_id 這樣的結果是
subjectnameno
4但是我加上這樣的條件,居然連一條記錄都不顯示了,為什么
where subjectdesignameno = '4'

解决方案 »

  1.   

    WHERE 看不到SELECTSQL的执行顺序大概如下.先执行FROM,如果有JOIN.的话.再执行JOIN.然后再执行WHERE.然后再GROUP BY ,WITH等..然后才是SELECT所以..你SELECT left(sub.subjectdesignameno,2)得到的是4..
    那你在WHERE时.是看不到这个SELECT..所以你可以尝试 WHERE left(sub.subjectdesignameno,2)='4'
      

  2.   

    整个字段subjectdesignameno内容不一定为'4','4'后面可能还有空格
    select left(sub.subjectdesignameno,2) as subjectdesignameno  
    from acc_vouchdetail vd 
    left outer join acc_subjectdesigname sub  on vd.subjectdesigname_id = sub.subjectdesigname_id 
    where ltrim(left(sub.subjectdesignameno,2))='4'
      

  3.   

    left(sub.subjectdesignameno,2) = "4"
    不等于
    sub.subjectdesignameno = "4"原因楼上说了.
      

  4.   

    Left()
      功能得到字符串左部指定个数的字符。
      语法Left ( string, n )
      

  5.   


    select 
         left(sub.subjectdesignameno,2) as subjectdesignameno  
    from 
         acc_vouchdetail vd 
    left outer join 
        acc_subjectdesigname sub  
    on 
        vd.subjectdesigname_id = sub.subjectdesigname_id 
    having  subjectdesignameno='4'用having  就可以了