找出特定的ID

时间:2015-04-08 06:02:46

标签: sql

我在sql中有一个像这样的表:

id               billpay
-------------------------
1024             0
1024             0
1024             1
1025             1
1025             1

我想只检索那些有billpay 1的id

请帮我解决这个问题

8 个答案:

答案 0 :(得分:1)

它应该是这样的: SELECT id FROM tabel WHERE billpay = 1;

答案 1 :(得分:1)

试试这个:

select distinct id from yourtable where billpay = 1

答案 2 :(得分:1)

select ID
from MyData
Where billpay = 1

Group By ID

分组依据列出唯一ID

select ID
from MyData A
Where not exists (select 'X' from MyData B where B.billpay <> 1 and  B.ID = A.ID)
Group By ID

这将仅列出billpay仅为1的ID

答案 3 :(得分:1)

这将按升序检索那些id,其中billpay = 1表中至少有一条记录。 DISTINCT关键字将确保您不会收到具有相同id的多条记录。

SELECT DISTINCT id
  FROM [TableName]
 WHERE billpay = 1
 ORDER BY id ASC

如果要排除那些也有billpay = 0记录的ID,请使用:

SELECT DISTINCT id
  FROM [TableName]
 WHERE billpay = 1
   AND id NOT IN (SELECT id FROM [TableName] WHERE billpay = 0)
 ORDER BY id ASC

此致

答案 4 :(得分:0)

试试这个:

SELECT id
FROM mytable
GROUP BY id
HAVING COUNT(CASE WHEN COALESCE(billpay, 0) <> 1 THEN 1 END) = 0 

以上内容仅会选择与id相关联的billpay=1,而只会选择billpay=1

SQL Fiddle Demo

答案 5 :(得分:0)

以下查询从ID组中选择ID,其中billpay = 1的记录数与组中的记录数相同

select id 
from bills 
group by id
having sum(billpay) = count(id) 

答案 6 :(得分:0)

使用NOT EXISTS查找除billplay 1以外的行,使用DISTINCT仅返回找到的每个ID中的一个。

select distinct id
from tablename t1
where not exists (select 1 from tablename t2
                  where t1.id = t2.id
                    and t2.billpay <> 1)

答案 7 :(得分:0)

尝试使用GROUP BY + MIN语句排除现有billpay=0

的ID
SELECT id 
FROM yourtable 
GROUP BY id
HAVING MIN(billpay)=1
相关问题