在mysql query + linux

时间:2016-04-17 12:29:11

标签: mysql linux shell

我有一个像这样的查询:

select * from bulk_upload_subscribers where SUBSCRIBER_ID='123456';

此查询的输出产生了我:

TASK_ID | PROCESS_TIME 
4790 | 2015-03-26 14:19:15
5784 | 2015-09-10 12:29:50
6001 | 2015-10-12 19:37:34
6020 | 2015-10-14 16:52:36

现在,我只需要按日期输出最后/最新的输出。即。期望的输出:

6020 | 2015-10-14 16:52:36

为了达到这个目的,我使用的是以下查询,实际上也是如此!

select * from bulk_upload_subscribers where SUBSCRIBER_ID='123456' ORDER BY PROCESS_TIME desc limit 1;

现在,主要方案是,我正在编写一个Join查询来获取' task_id'并且基于task_id我正在获取任务名称'从不同的表。查询是:

select a.SUBSCRIBER_ID,b.TASK_ID,b.task_name AS Campaign_name from bulk_upload_subscribers a,bulk_upload_tasks b where subscriber_id in ('123456','234567','345678') and a.task_id=b.task_id order by a.PROCESS_TIME desc limit 1;

由于limit 1,上面的查询只会产生一个值。任何人都可以指导我如何实现这项任务?每个SUBSCRIBER_ID的输出必须有3个任务名称。

NOTE: I have around 600 SUBSCRIBER_ID's. Solution via scripting will also help me. 

1 个答案:

答案 0 :(得分:0)

我不知道你的程序是否完全针对这个问题,我猜你可以使用循环打印每个SUBSCRIBER_ID。

例如,您可以像这样创建一个循环过程:

CREATE PROCEDURE doiterate(p1 INT)
BEGIN
  label1: LOOP
    SET p1 = p1 + 1;
    IF p1 < 10 THEN
      ITERATE label1;
    END IF;
    LEAVE label1;
  END LOOP label1;
  SET @x = p1;
END;

这将帮助您打印每个SUBSCRIBER_ID的输出。