2014-10-02 151 views
0

MySQL查詢包含

id name(varhcar) 
2 15 
3 15,23 
4 1315,424 
5 1512,2323 
6 23,15,345 
7 253,234,15 

我需要找出其中包含15這意味着我需要2,3,6,7,不是4,5的值。 以上是樣本數據,實時可以是任何數字。 任何人都可以幫我嗎?

+2

使用'FIND_IN_SET()'函數,它在MySQL文檔中。 – Barmar 2014-10-02 15:06:41

回答

1

如果你的數據庫是小,考慮使用find_in_set功能:

select * from your_table 
where find_in_set('15',name); 

考慮改變模型,掌握細節表提高速度,如果你有一張大桌子。

0

這是怎樣的關係模型,你可以採取以使這是一個很容易解決的問題:

TABLE: records 

id 
2 
3 
4 
5 
6 
7 

TABLE: values 

record_id value 
2   15 
3   15 
3   23 
4   1315 
4   424 
5   1512 
5   2323 
6   23 
6   15 
6   345 
7   253 
7   234 
7   15 

然後你就可以查詢:

SELECT DISTINCT id FROM records 
INNER JOIN values ON records.id = values.record_id AND values.value = 15 

這是你可以採取的唯一辦法MySQL的查詢優化器的好處。

不是說你不可能做你想做的事,但它有點錯過了觀點。

如果您已經以這種格式存儲數據,則應使用類似於Java的split或PHP的explode這樣的編程語言,編寫一次性遷移以將其轉換爲此「規範化」格式。