我将一些数据存储在 MySQL 中,并希望过滤掉与给定条件匹配的行。
听起来很容易,但这并不容易,因为涉及到一些加入标准。
我确实有以下表格:
items : id, ...
genres: id, name:varchar, item_id
每个项目都有多个流派。
如果至少一个流派确实与给定的流派名称(或一组名称)匹配,则查询应该过滤掉项目。
例如:
Item with id 1 has 3 genres
- genre name = 'foo'
- genre name = 'bar'
- genre name = 'baz'
如果给定的流派名称是 'bar'、['bar'、'baz'、'xyz'] 等,则项目 1 可能不是结果集的一部分。
我试图离开加入项目的流派并应用带有“genres.name NOT IN (?)”的 WHERE 语句。? 是给定的流派名称集。
这(当然)只适用于只有一种类型的项目。同样可以通过多个 WHERE 条件来实现: WHERE name <> 'a' AND name <> 'b' ...
任何想法如何正确完成此查询?
提前致谢!