【问题标题】:Display output for each input in mysql query + linux在 mysql query + linux 中显示每个输入的输出
【发布时间】:2016-04-17 12:29:11
【问题描述】:

我有一个类似这样的查询:

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

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

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 从不同的表中获取“task_name”。查询是:

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. 

【问题讨论】:

    标签: mysql linux shell


    【解决方案1】:

    我不完全了解您的程序是否解决了这个问题,我想您可以使用循环打印每个 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 的输出。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-15
      • 2023-02-04
      • 1970-01-01
      • 2013-08-14
      • 2022-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多