mysql 語法錯誤

edited 十月 2013 in 資料庫
請問為何:
odbc_exec( $cnx, "select `STU`,`EID` from `TABLE1` where `EID` != 'E' " );

執行出現錯誤:
Warning: odbc_exec(): SQL error: [Microsoft][ODBC Microsoft Access Driver] 查詢運算式 '`EID` != 'E' 中的 語法錯誤 (少了運算元)在 odbc_exec 有錯誤發生( 沒有指標傳回 )

但odbc_exec( $cnx, "select `STU`,`EID from `TABLE1` where `EID` <> 'E' " );
就可以執行?
SQL語法否定不是用!=嗎?

原始討論: http://twpug.net/x/modules/newbb/viewtopic.php?topic_id=2353

評論

  • edited 一月 2007
    SQL語法的「不等於」就是用 <> , != 不行 。
    就這樣。
  • edited 一月 2007
    感謝感謝!
    我還發現ACCESS不支援換頁常用的limit只能用 top,
    不過top挺怪地,換頁取出資料時總漏掉或多了幾筆,

    例如我每500頁做一分頁的方式:

    $total_page=ceil($total/500);//$total->全部筆數

    if($total_page==$page) $this_page=($total-(($page-1)*500)); else $this_page=500;//$this_page->本頁筆數

    if($end>$total) $this_end_page=$total; else $this_end_page=$end-1;//$this_end_page->本頁最初取得筆數

    $sql= " select top $this_page * from (select top $this_end_page `ACT活動`.`ACT` as act ,`ACT活動`.`課程等級` as classlev , `報名`.`服務單位` as school ....


    可是在第一頁取得499第二頁取到1005第三頁取到1563,真是搞不懂。


    另外請問ACCESS支援sum() ....group by.... 指令嗎?
  • edited 一月 2007
    Limit 不是 SQL 標準語法,各家 DBMS 有自己的作法; Access 不支援很正常。 sum(), groupd by 是SQL標準語法,應該支援。

    我只看到 $end-1 ,沒看到 $end 初值和其他計算方式。而且你的 SQL 查詢也顯得多餘,看第一頁抓500筆、看第二頁抓1000筆... 我建議你用排序加 where 。

    $n = 500;
    $lastIdOfPage = 0; //assume id is start from 1.
    //自己找一個鍵值

    while() {
    select top $n from table where id > $last_id_of_this_page order by id;

    $lastIdOfThisPage = 本次查詢 (本頁) 最後一筆紀錄的 id
    }
Sign In or Register to comment.