求1sql语句,大家来帮忙
求一sql语句,大家来帮忙
一个表Test
A B
1 001
1 002
2 011
2 003
第一步:查出B列数据开头两个字符为“00”的数据
查完应该是:
A B
1 001
1 002
2 003
第二步:将查出的数据与原来的表进行比较,若A列每个值相同数据的个数与第一步查出来的相同则显示出来(因为在第一步中Test表中低三行被筛选掉了,与原来的数据量不符合,所以第二步后就查不出来)
结果应该是:
A B
1 001
1 002
------解决方案--------------------
SELECT * FROM TEST A
WHERE B LIKE '00%'
AND NOT EXISTS (
SELECT 1
FROM TEST B
WHERE B.A = A.A
AND NOT (B.B LIKE '00%')
)
逻辑是一样的
------解决方案--------------------
------解决方案--------------------
select a,b from test where B like '00%'
and test.a not in(
select a from (
select a,b from test
except
select a,b from test where B like '00%')tb1
)
------解决方案--------------------
这个题目要换个思路来思考,在第一步:查出B列数据开头两个字符为“00”的数据时,有一部分B列数据不符合要求,A列值相同数据的个数减少,就不可能出现相同个数。
------解决方案--------------------
不知道符合楼主的意思不
------解决方案--------------------
select * from test where A in
(select A from test where b link '00%'
group by a
having count(*)>1
)
------解决方案--------------------
好想法。
一个表Test
A B
1 001
1 002
2 011
2 003
第一步:查出B列数据开头两个字符为“00”的数据
查完应该是:
A B
1 001
1 002
2 003
第二步:将查出的数据与原来的表进行比较,若A列每个值相同数据的个数与第一步查出来的相同则显示出来(因为在第一步中Test表中低三行被筛选掉了,与原来的数据量不符合,所以第二步后就查不出来)
结果应该是:
A B
1 001
1 002
SQL
------解决方案--------------------
SELECT * FROM TEST A
WHERE B LIKE '00%'
AND NOT EXISTS (
SELECT 1
FROM TEST B
WHERE B.A = A.A
AND NOT (B.B LIKE '00%')
)
逻辑是一样的
------解决方案--------------------
SELECT * FROM TEST
WHERE B LIKE '00%'
AND A NOT IN (SELECT A FROM TEST WHERE B NOT LIKE '00%')
------解决方案--------------------
select a,b from test where B like '00%'
and test.a not in(
select a from (
select a,b from test
except
select a,b from test where B like '00%')tb1
)
------解决方案--------------------
这个题目要换个思路来思考,在第一步:查出B列数据开头两个字符为“00”的数据时,有一部分B列数据不符合要求,A列值相同数据的个数减少,就不可能出现相同个数。
------解决方案--------------------
select * from test where A IN (
select A from test where left(b,2)='00' group by A having count(*)>1)
不知道符合楼主的意思不
------解决方案--------------------
select * from test where A in
(select A from test where b link '00%'
group by a
having count(*)>1
)
------解决方案--------------------
好想法。