0

我的表结构如下

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 的表,现在我想通过仅具有 ValStr='h1' 和 ValInt=1 的查询来获取 ID,这意味着只有那些 ValStr 为 hi 且 ValInt = 1 的 ID 属于同一 ID 列。请帮忙。

这是我到目前为止所做的。

select ID from Table where DefID=1 and ValStr='hi' and  ValInt=1

我的实际答案应该是

ID
 2

但我从上面的查询中得到了这个

ID
1
2
3
4
4

3 回答 3

1
SELECT  ID
FROM    TableName
WHERE   (DefID = 1 AND ValInt = 1) OR
        (DefID = 1 AND ValStr = 'hi')
GROUP   BY ID
HAVING  COUNT(*) = 2
于 2013-03-01T09:47:38.413 回答
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
于 2013-03-01T09:51:26.643 回答
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
于 2013-03-01T09:39:04.267 回答