2013-08-28 60 views
0

在我的表中我有一個域user_ids。在user_ids精密組件containeing像12,45,78,95,21,78,98如何使用mysql從一組id中搜索id?

值我需要的是我需要一個MySQL的查詢搜索特定ID:(適用於前45)該領域。

我使用運營商,但它不工作,因爲我的預期。例如:當我搜索其返回tru,但id 5不在列表中。

我想知道是否有任何默認功能可用mysql

你能幫我嗎...

我的查詢。

SELECT * FROM `FRIENDSLIST` WHERE `USERS_ID` LIKE '%'.$ID.'%'; 

注:我不知道這個問題是否符合標準,請不要投票。請幫助我....

+1

在你的問題請提供您已經嘗試查詢。 – Eggplant

+0

您不應該將所有'user_ids'存儲在一個字段中,而是創建另一個表,而不是包含'user_id'和'mytable_id'字段。 – Arthur

+0

@Athur。其實你是寫的。但即時通訊並不是在與阿雷迪定義的表格一起工作。如果我去這個選項,我需要改變所有的場景,我沒有權限去做... :( – Ricky

回答

3

這也適用於:

select * from FRIENDSLIST where find_in_set($ID, USERS_ID) <> 0 
+1

非常感謝@rgin,我得到了我正在尋找的東西。之前:)。 – Ricky

1

嘗試

Where ',' + MyField + ',' Like '%,' + MySearchString + ',%' 

的問題是,你想它作爲ID,但它只是一個字符串。因此,當您在'12'中搜索'5'時,45,78,95,21,78,98'會在45中的5箇中找到它。如果您用逗號包圍,則搜索',45' ,12,45,78,95,21,78,98',並找到它,但是你在尋找',5',它不會匹配,根據需要。

您還需要在開頭和結尾添加逗號,以便能夠計算第一個和最後一個ID。

+0

當你搜索98時會發生什麼? – rgin

+0

98也應該工作,因爲該語句添加了前導和尾隨逗號到搜索的字符串,所以搜索變成Where',12,45,78,95,21,78,98,'like',98'',並且匹配,對所有的編輯感到抱歉,昏昏欲睡! – asantaballa

+0

對不起,意思是Where',12,45,78,95,21,78,98,'like'%,98,%' – asantaballa

0

根據您的數據,更簡單的方法是用逗號搜索,如'45,'。

但更好的辦法是它基於逗號分割並匹配到它。