私は小さな問題があります。
tbl_groups
id (int) | teacher_id (int) | student_ids (text)
------------------------------------------------
1 | 14 | 2015,2016,2017
2 | 35 | 15,16,17
3 | 14 | 631
student_ids
implode()
を使用してPHPの配列によって満たされます:次のように
は、私は私のテーブルを持っています。私は学生証でグループのIDを検索するには、次のクエリを実行しかし
、:
SELECT `id` FROM `tbl_groups` WHERE `student_ids` LIKE '%15%'
私は、行1を取得し、2が返されます。これは、student_ids
"15"が検索され、 "2015"に "15"が含まれているために返されるために発生します。
どうすればこの問題を防ぐことができますか?
CSVとして値を格納するには、非常に悪いデータベース設計です。あなたはそれを再設計するべきです。その間に[find_in_set()](https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_find-in-set)を使用することができます – Jens
WHERE 'student_ids' = 15'を使用してみませんか? – David
@davidこれは動作しません。なぜなら、 'student_ids'はどこでも" 15 "と一致しないからです。 – Kevdev