我的表结构如下
ID DefID AttrID ValInt ValReal ValDate ValStr
1 1 1 NULL NULL NULL hi
2 1 1 NULL NULL NULL hi
3 1 1 NULL NULL NULL hi
4 1 1 NULL NULL NULL hi
1 1 1 0 NULL NULL NULL
2 1 1 1 NULL NULL NULL
3 1 1 0 NULL NULL NULL
4 1 1 0 NULL NULL NULL
这是我的表名为Table,现在我希望通过查询获得ID只有ValStr =' h1'和ValInt = 1,表示只有ValStr为hi的ID,以及属于同一ID列的ValInt = 1。请帮忙。
这是我到现在所做的事情。
select ID from Table where DefID=1 and ValStr='hi' and ValInt=1
我的实际答案应该是
ID
2
但是我从上面的查询中得到了这个
ID
1
2
3
4
答案 0 :(得分:1)
SELECT ID
FROM TableName
WHERE (DefID = 1 AND ValInt = 1) OR
(DefID = 1 AND ValStr = 'hi')
GROUP BY ID
HAVING COUNT(*) = 2
答案 1 :(得分:1)
还有一个选择
select t1.ID from Table t1
where EXISTS (
SELECT *
FROM Table t2
WHERE t2.DefID = 1 AND t2.ValStr = 'hi'
) and t1.ValInt = 1
答案 2 :(得分:0)
怎么样
SELECT distinct t1.ID
FROM Table t1
JOIN Table t2 on t1.id = t2.id
WHERE t1.DefID=1 and t2.DefID = 1
AND t1.ValStr='hi' and t2.ValInt=1
或(取决于品味)
SELECT distinct t1.ID
FROM Table t1
JOIN Table t2 on t1.id = t2.id AND t1.DefID=1 = t2.DefID
WHERE t1.DefID=1 AND t1.ValStr='hi' and t2.ValInt=1