mysqlの達人に質問があります。私はこのようなテーブルを持っています:
| col1 | col2 | row1 | ジョン| 1,2,13,22,52 | row2 | デイブ| 1,8,10 | row3 | マリア| 2,3,5,11 |
「col2」内の特定の番号をチェックするクエリを作成するにはどうすればよいですか。たとえば、「13」ではなく「1」という番号が含まれるすべての行、または「11」ではなく「1」が必要です。したがって、row1とrow2を返します。
「LIKE%」でそれをやろうとしていましたが、うまくいきませんでした
SELECT * FROM table WHERE col2 LIKE "%1%"
助言がありますか?
編集
2つのテーブルに分けますか?
table1 | id | col1 | row1 | 1 | ジョン| row2 | 2 | デイブ| row3 | 3 | マリア|
table2 | id | f_id | col2 | row1 | 1 | 1 | 1 | row1 | 2 | 1 | 2 | row1 | 3 | 1 | 13 | row1 | 4 | 1 | 22 | row1 | 5 | 1 | 52 | row2 | 6 | 2 | 1 | row2 | 7 | 2 | 8 | row2 | 8 | 2 | 10 | row3 | 9 | 3 | 2 | row3 | 10 | 3 | 3 | row3 | 11 | 3 | 5 | row3 | 12 | 3 | 11 |
関数を使用する必要がありますFIND_IN_SET
:
SELECT * FROM table WHERE FIND_IN_SET('1', col2) > 0;
個別のテーブルを使用する場合:
SELECT *
FROM table1
JOIN table2 ON table1.id = table2.f_id
WHERE table2.col2 = 1;
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加