我在sql中有一个像这样的表:
id billpay
-------------------------
1024 0
1024 0
1024 1
1025 1
1025 1
我想只检索那些有billpay 1的id
请帮我解决这个问题
答案 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
。
答案 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
SELECT id
FROM yourtable
GROUP BY id
HAVING MIN(billpay)=1