我有一个像这样的查询:
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.
答案 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的输出。