选择并跳过MySQL结果

时间:2018-09-30 09:12:13

标签: mysql

我有一个有关游戏信息的数据库。有一些类别分配给每个游戏,形式为cat1,cat2,cat3。 我的桌子的结构

games (
    id int not null auto_increment,
    name varchar (100) not null,
    ...
    cats varchar (200) not null,
    FULLTEXT INDEX fulltext (cats)
    primary key (id)
)engine=myisam charset=utf8;

要搜索特定类别的游戏,请使用查询:

SELECT * FROM games WHERE MATCH(cats) AGAINST('action' IN NATURAL LANGUAGE MODE)

现在,如何显示不包含“动作”类别的游戏? 例如,我想在cats字段中显示所有不包含“ action”字眼的游戏。

你有什么主意吗?

2 个答案:

答案 0 :(得分:1)

您可以使用NOT运算符:

SELECT *
FROM game
WHERE cat1 NOT IN ('action');
在您的情况下,

可能是这样的:

SELECT * 
FROM games 
WHERE NOT MATCH(cats) AGAINST('action' IN NATURAL LANGUAGE MODE)

文档: https://www.w3schools.com/sql/sql_and_or.asp

答案 1 :(得分:1)

尝试一下:

SELECT * FROM games WHERE cats  NOT LIKE '%action%'

当我在字段中输入多个值时,我尝试使用特殊的分隔符而不是逗号来分隔它们。

例如:## cat1 ## cat2 ## cat3 ##

因此,当我需要搜索时,可以这样做:

SELECT * FROM games WHERE cats LIKE '%##action##%'

OR

SELECT * FROM games WHERE cats NOT LIKE '%##action##%'

但是,由于@Madhur Bhaiya感到悲伤,您需要重新构建数据。 这不是最佳的数据结构。