2

コンマ区切りの値「1,2,3」を含む変数があります

私のテーブルは以下の通りです

id    favourite_id
1     2,5,6
2     3,5,7
3     6,1,3
4     5,6,7

変数を favourite_id 列と照合して、favourite_id で共通の値が少なくとも 1 つあることを確認したいと考えています。だから私は以下のようにmysqlクエリの出力が欲しい

id    favourite_id
1     2,5,6
2     3,5,7
3     6,1,3

これは正規化されたテーブル構造ではないことはわかっていますが、データベース構造を変更することはできません。よくグーグル検索しましたが、適切な解決策が見つかりませんでした。

4

2 に答える 2

7

mysqlのREGEXPを使用して2つの解決策を見つけました

(1)

`favourite_id` REGEXP '[[:<:]]1[[:>:]]|[[:<:]]2[[:>:]]|[[:<:]]3[[:>:]]' //faster then below

(2)

`favourite_id` REGEXP '(^|,)(1|2|3)(,|$)' //slower then above
于 2013-09-25T07:00:54.253 に答える
4

使用するFIND_IN_SET(str,strlist)

詳細: http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_find-in-set

SELECT FIND_IN_SET('b','a,b,c,d');
于 2013-09-05T06:29:31.243 に答える