GORM 'NOT IN' 子查询

GORM 'NOT IN' subquery

我想执行这样的子查询:

 SELECT id, col1, col2 FROM table1 WHERE col1='val1' and col2 NOT IN (
  SELECT ID FROM table2 WHERE col1='val1' and col3 = 'val3')

如何使用GORM来执行它?

GORM can compose 查询。

写一个标准查询然后调用.SubQuery()方法:

sub := db.Table("table2").Select("ID").Where("col1 = ?", 'val1').SubQuery()

您可以将它作为参数放在 .Where() 方法中

err := db.Table("table1").Where("col2 NOT IN ?", sub).Find(&table1Type).Error
//handle the error