从多个表中获取值的计数

时间:2017-05-19 10:54:35

标签: mysql count

我有两张桌子

TBL1

ID     | ID1    |  ID2
------ | ------ | ------
1      | 3      |   5

TBL2

   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。

请指导我如何实现它

5 个答案:

答案 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;