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的值。 以上是樣本數據,實時可以是任何數字。 任何人都可以幫我嗎?
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的值。 以上是樣本數據,實時可以是任何數字。 任何人都可以幫我嗎?
如果你的數據庫是小,考慮使用find_in_set
功能:
select * from your_table
where find_in_set('15',name);
考慮改變模型,掌握細節表提高速度,如果你有一張大桌子。
這是怎樣的關係模型,你可以採取以使這是一個很容易解決的問題:
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
這樣的編程語言,編寫一次性遷移以將其轉換爲此「規範化」格式。
使用'FIND_IN_SET()'函數,它在MySQL文檔中。 – Barmar 2014-10-02 15:06:41