2012-05-29 53 views
1

我使用MySQL 我有一個mysql表。
而我想選擇所有記錄的行號。
爲此我使用這個sql命令。從表中選擇行號到c#datatable給出錯誤

SELECT @row := @row + 1 as row, t.* FROM t_persons t, (SELECT @row := 0) r 

但是當我嘗試運行命令和負載數據,以數據表如下面

DataTable dt = new DataTable(); 
command.CommandText = sql; 
adapter.SelectCommand = command; 
adapter.Fill(dt); 

它給像命令執行過程中遇到致命誤差的誤差。
但是,當我在phpmyadmin中嘗試這個命令它工作正常。那麼問題是什麼。以及如何解決它。 謝謝...

+4

這看起來不像sql。 – nothrow

+1

@row看起來像參數。但沒有一個是被定義的這不是你如何在C#中建立SQL#​​ – Doomsknight

+0

我猜'sql'是一個字符串,包含您之前顯示的查詢,對不對?但是在使用它之前是否定義了「@ row」? –

回答

-1

它看起來像一個查詢內MySQL變量完全有效的MySQL實現。你用你選擇的@row:= 0作爲「r」別名來聲明它們。它認爲問題在於你正在調用可能保留的最後一列名稱「行」。只是咧嘴一笑,更改爲:

@row:= @row + 1 myRow

...來自@row改變你的變量@varRow(可變行)......或者兩者的結合...

@varRow:= @varRow +1作爲myRow

我不知道是誰下投票的答案,但你正在做的是與MySQL很正常,我已經做了很多時間可以通過我在這裏發表的許多答案在s/o上看到。
然後,我會嘗試通過表FIRST檢索列,然後是@vars列...不知道在嘗試寫入@var之前,是否在引擎內獲取有效的記錄條目...

SELECT 
     t.*, 
     @varRow := @varRow + 1 as myRow 
    FROM 
     t_persons t, 
     (SELECT @varRow := 0) r 
+0

我試過了,但它給出同樣的錯誤.... – namco

+0

@namco,修改答案嘗試 – DRapp