如何以这种方式选择数据库-sql

如何以这种方式选择数据库-sql,sql,sql-server,database,relational-division,Sql,Sql Server,Database,Relational Division,我有这张桌子 id owner group model 1 1 shapes circle 2 1 shapes rectangle 3 1 shapes squire 4 2 fruits apple 5 2 fruits orange 6 2 fruits banana 7 3 shape

我有这张桌子

id owner group model 1 1 shapes circle 2 1 shapes rectangle 3 1 shapes squire 4 2 fruits apple 5 2 fruits orange 6 2 fruits banana 7 3 shapes circle 8 3 shapes rectangle 9 3 shapes star id所有者组模型 1.1形状为圆形 2.1矩形 3.1.乡绅 4 2水果苹果 5.2水果橙 6.2水果香蕉 7.3形状圆 8 3个矩形 9 3个形状的星星 每个所有者选择一组并输入3个选项,现在我想找到选择形状并输入圆形和星形的所有者


它必须返回所有者id=3

假设
组和
模型对于每个
所有者都是唯一的

SELECT  a.owner
FROM    tableName a
WHERE   a.[group] = 'shapes' AND
        a.model IN ('circle','star')
GROUP   BY a.owner
HAVING  COUNT(*) = 2
否则,您需要唯一地计算
model

SELECT  a.owner
FROM    tableName a
WHERE   a.[group] = 'shapes' AND
        a.model IN ('circle','star')
GROUP   BY a.owner
HAVING  COUNT(DISTINCT a.model) = 2

在指定参数范围内,这将起作用: 选择所有者,其中[group]=“shapes”和model=“circle” 横断
选择owner WHERE[group]='shapes'和model='star'

谢谢你的回答,但我认为是mysql,我使用的是ms sql 2008。你能转换它吗?在这里,但是你需要用括号转义列名
group
,因为它是一个保留关键字。Msg 156,级别15,状态1,第3行关键字“group”附近的语法不正确。谢谢新的SqlFiddle正在工作,谢谢你让我检查并理解你的解决方案,让我询问我是否有任何问题,再次感谢。有任何教程来描述你的方法吗?我在网上搜索了一周,但我没有使用group by,这很好。如何引用我的表(例如:选项)it sqys:Msg 207,级别16,状态1,第1行无效列名“group”。Msg 207,16级,状态1,第1行无效列名“model”。Msg 207,级别16,状态1,第1行列名“所有者”无效。Msg 207,16级,状态1,第1行列名“group”无效。Msg 207,16级,状态1,第1行无效列名“model”。Msg 207,级别16,状态1,第1行列名“owner”无效。您需要在WHERE子句之前从[table name]添加。我不知道你怎么称呼你的桌子。