Mysql按列添加组

时间:2017-03-13 11:26:56

标签: php mysql sql

我想在mysql查询的末尾添加额外的列,它显示带有增量值的不同记录(parent_id)(图像中的列“x”)作为图像中的附加样本。 我试过的示例mysql查询:

select *, count(parent_id) as x
from businessDemands
where zip='123'
group by sub_Category_name
order by category_name desc

Mysql query sample image

我想要与图像相同的结果,现在它与“x”列

中的错误值相同

1 个答案:

答案 0 :(得分:0)

您可以使用变量在MySQL中执行此操作:

import timeit

s3, t3 = set(), set()
s4, t4 = set(), set()
s5, t5 = set(), set()
s6, t6 = set(), set()

for x in xrange(int(1e3)):
    s3.add(x)
    t3.add(x*2 + x)

for x in xrange(int(1e4)):
    s4.add(x)
    t4.add(x*2 + x)

for x in xrange(int(1e5)):
    s5.add(x)
    t5.add(x*2 + x)

for x in xrange(int(1e6)):
    s6.add(x)
    t6.add(x*2 + x)


def _test():
    for i in [3, 4, 5, 6]:
        for j in [3, 4, 5, 6]:
            if i >= j:
                s, t = 's' + str(i), 't' + str(j)
                print i, j
                print timeit.timeit('{0}.intersection({1})'.format(s, t), setup="from __main__ import {0}, {1}".format(s, t))
        eval('del s' + str(i))

编辑:

变量和eval('del s' + str(i)) 不能很好地协同工作。使用子查询:

select t.*,
       (@rn := if(@p = parent_id, @rn,
                  if(@p := parent_id, @rn + 1, @rn + 1)
                 )
       ) as x
from t cross join
     (select @p := -1, @rn := 0) params
order by parent_id;

修复子查询,使其成为有效的GROUP BY或完全删除聚合。