我有两张桌子
ID | ID1 | ID2
------ | ------ | ------
1 | 3 | 5
ID | NAME | ID2
------ | ------ | ------
1 | RAJ | 5
2 | SAM | 3
3 | RAM | 5
4 | RIO | 2
5 | ROY | 5
6 | TIM | 5
现在我正在努力做的是,
取tbl1中的ID2,即5然后获取tbl2中ID2的行,值为5
现在计算tbl2中包含5的行数
检查它是否大于或小于tbl1中的ID1值,即3
如果大于那么echo true则返回echo false。
在上述情况下,它将是真的,因为我们有4个条目5,大于3。
请指导我如何实现它
答案 0 :(得分:1)
如果我理解你的问题,你需要类似的东西。但是,如果tbl1
中{1}}的{1}}为ID2
,则可能表现不正确<{1}}
5
答案 1 :(得分:1)
此查询将为您提供 tbl1 的每一行的结果:
select tbl1.id, tbl1.id1, tbl1.id2,
case when cnt.num > tbl1.id1 then 'TRUE'
else 'FALSE'
end as chk
from tbl1
left join (
select count(*) as num
from tbl2
where tbl2.id2 = tbl1.id2
) cnt
答案 2 :(得分:1)
我会以这种方式写一个查询
select t1.ID2, case when cnt > ID1 then 'true' else 'false' end
from (
select t1.ID2, t1.ID1, count(*) cnt
from tbl1 t1
join tbl2 t2
on t1.ID2 = t2.ID2
group by t1.ID2, t1.ID1
) t1
答案 3 :(得分:1)
select * , count(*), if(count(*) = t1.ID1, true, false) Result
from t1
inner join t2 on t1.ID2 = t2.ID2
group by t2.ID2
答案 4 :(得分:1)
尝试以下查询:
SELECT
IF((SELECT COUNT(*)
FROM
t2, t1
WHERE
t1.id2 = t2.id2) > t1.id1,
'true', 'false') AS result
FROM
t1;