2014-03-28 27 views
0

我對SQL相當陌生,我試圖保存自己一段時間在多個列中搜索單個值,以便不必將該值粘貼到3個引號。在用戶定義的變量中使用'WHERE'

EG:

SET @u1 := '000123'; 

SELECT * FROM database1.table1 
WHERE id = @u1 
OR prev_id = @u1 
OR next_id = @u1 
OR link_id = @u1 
; 

因此,在上述情況下,我試圖找到其中ID = 000123要麼是ID,prev_id,next_uid,link_uid,而不必粘貼在4個實例以下:

SELECT * FROM database1.table1 
WHERE id LIKE '000123' 
OR prev_id = '000123' 
OR next_id = '000123' 
OR link_id = '000123' 
; 

環顧四周,我相當確信這是可能的,但也許我錯過了什麼?

回答

1

這是你在找什麼?

SELECT * 
FROM database1.table1 
WHERE @u1 in (id, prev_id, next_id, link_id); 
+0

它很可能是,但我收到以下錯誤消息: 錯誤代碼:1270的歸類(utf8_general_ci,IMPLICIT),(utf8_unicode_ci,IMPLICIT),(utf8_unicode_ci,隱含的)操作的非法混合'IN' – n8udd

+3

聽起來像默認數據庫排序規則與表排序規則不同。您可以使用COLLATE鍵工作來更改排序規則。 –

相關問題