2012-05-13 43 views
4

我在使用SQL查詢窗口調用phpmyadmin中的變量時有點麻煩。SQL查詢中用戶定義的變量

我仍然只是在學習繩索,所以這很簡單。我相信這只是一個小的語法或引用問題。

我所試圖做的是:

SET @var1 = Value (Does it need quote marks after "=" or not?) 

SELECT * From `Table` WHERE 'Column' = @var1  (Same question about quote marks) 

這似乎只是愚蠢簡單。我做了一個搜索,只是無法找到我做錯了什麼。

+0

如果您使用保留字並希望將其用作字段名,請使用雙引號(單引號不起作用,它用於字符串),它符合ANSI SQL。此外,反向並不是stackoverflow友好的,你將無法使用它們來解釋句子中的代碼 –

回答

1

如果你的價值包含字符串,你必須使用周圍的引號,否則你不會。但是你不應該引用你的列名!所以:

SET @var1 = 'stringval'; 
SELECT * From Table WHERE Column = @var1; 
+0

K好知道。我們現在已經過去了語法錯誤,我得到了這個:#1267 - 非法混合排序(utf8_general_ci,IMPLICIT)和(utf8_unicode_ci,IMPLICIT)進行操作'=' –

+0

我剛剛檢查過,沒有任何東西正在使用utf8_unicode 。全是utf8_general –

+0

問題解決了。我只需要改變一些設置。多謝你們! –

4

你不需要引號:

SET @var1 =10; 
SELECT * FROM table WHERE `column` = @var1 //should work 

或者你可以這樣做:

SET @var1:='somename'; 
SELECT * FROM table WHERE `somefield`[email protected] 

參見:variables

+0

相信你剛剛以兩個理由幫助我,爲什麼它不起作用。在「SET」命令後我沒有使用分號。閱讀鏈接後,我認爲我的價值不兼容。我試圖使用的值看起來像'10 -12001' –

+0

如果那個字符串,那麼你可以使用類似的東西在添加的答案 –