如何根据此SQL查询中的布尔参数包含或排除记录?

时间:2016-11-19 11:03:27

标签: mysql sql database rdbms

我有以下SQL疑问(我正在使用MySql)

我有住宿表:

id                bigint(20) unsigned   NO  PRI     NULL    auto_increment
id_accomodation   bigint(20) unsigned   NO  MUL     NULL    
is_master         tinyint(1)            NO          NULL    
media             longblob              NO          NULL    
description       varchar(255)          YES         NULL    
time_stamp        datetime              YES         NULL    

如果我这样做:

SELECT * FROM `accomodation_media`
WHERE id_accomodation = 7
AND is_master = true

返回 id_accomodatio 7 的所有记录, is_master true 。< / p>

我想获得不同的东西:

我需要以下行为:如果将 is_master 设置为 true ,则必须返回所有包含 is_master 设置的bot的记录是或否( is_master 的值无关紧要,不能将其用作过滤器。)

如果 is_master false 必须返回 is_master *设置为** false 的所有记录。

如何更改查询以执行此操作?

1 个答案:

答案 0 :(得分:0)

添加类型为Int(1)的列,这表示长度为1的整数。

所以你可以使用0 OR NULL表示false,将1表示为true

SELECT * FROM accomodation_media WHERE id_accomodation = 7 AND is_master = 1