Exist方法可以更高效地检索所给的Where条件数据是否存在,而不是查询完整的数据结果后返回。

方法定义:

  1. func (m *Model) Exist(where ...interface{}) (bool, error)

示例SQL

这是后续示例代码中用到的MySQL表结构。

  1. CREATE TABLE `user` (
  2. `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  3. `name` varchar(45) NOT NULL
  4. PRIMARY KEY (`id`)
  5. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

使用示例

查询完整数据:

  1. // SELECT * FROM `user` WHERE (id > 1) AND `deleted_at`=0
  2. g.Model("user").Where("id > ?", 1).All()

使用Exist方法:

  1. // SELECT 1 FROM `user` WHERE (id > 1) AND `deleted_at`=0 LIMIT 1
  2. g.Model("user").Where("id > ?", 1).Exist()

可以看到底层是使用SELECT 1来查询结果,即如果结果存在则返回1,否则什么也不返回。