Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将首次连接限制为特定行数的MySQL查询_Mysql - Fatal编程技术网

将首次连接限制为特定行数的MySQL查询

将首次连接限制为特定行数的MySQL查询,mysql,Mysql,我正在尝试运行一个连接3个表的查询,我想将第一个连接限制为仅5行。最终结果可以返回任意数量的行,因此我不想在查询的末尾添加限制 这是我的查询,它可以工作,但显然没有将第一个连接限制为5行。我尝试了一个子查询,我相信这是实现这一点的唯一方法,我尝试的每件事都会出错。我似乎无法将我所看到的例子应用于我的情况 SELECT mw_customer.customer_id, mw_customer.customer_uid, mw_campaign.customer_id, mw_campaign.ca

我正在尝试运行一个连接3个表的查询,我想将第一个连接限制为仅5行。最终结果可以返回任意数量的行,因此我不想在查询的末尾添加限制

这是我的查询,它可以工作,但显然没有将第一个连接限制为5行。我尝试了一个子查询,我相信这是实现这一点的唯一方法,我尝试的每件事都会出错。我似乎无法将我所看到的例子应用于我的情况

SELECT mw_customer.customer_id, mw_customer.customer_uid, mw_campaign.customer_id, mw_campaign.campaign_id, mw_campaign.type, mw_campaign.status, mw_campaign_delivery_log.campaign_id, mw_campaign_delivery_log.subscriber_id
   FROM mw_customer 
   JOIN mw_campaign
        ON mw_customer.customer_id = mw_campaign.customer_id
        AND mw_customer.customer_uid = 'XYZ'
        AND mw_campaign.type = 'regular'
        AND mw_campaign.status = 'sent'
   JOIN mw_campaign_delivery_log
        ON mw_campaign.campaign_id = mw_campaign_delivery_log.campaign_id
所以我想做的是将“JOIN mw_customer”限制为最多5行,然后在JOIN mw_campaign_delivery_日志之后,可以有任意数量的行


谢谢

在子查询中用
LIMIT 5
包装第一个联接

SELECT t.customer_id, t.customer_uid, t.campaign_id, t.type, t.status, l.subscriber_id
   FROM (SELECT cus.customer_id, cus.customer_uid, cam.campaign_id, cam.type, cam.status
         FROM mw_customer AS cus
         JOIN mw_campaign AS cam
            ON cus.customer_id = cam.customer_id
         WHERE cus.customer_uid = 'XYZ'
            AND cam.type = 'regular'
            AND cam.status = 'sent'
         LIMIT 5) AS t
   JOIN mw_campaign_delivery_log AS l
        ON t.campaign_id = l.campaign_id

请注意,
LIMIT
ORDER BY
表示所选的5行将不可预测。

提供表结构和示例数据作为基于ascii数据的表。。还将例外结果作为基于ascii数据的表发布。。我们不是来对您的SQL代码进行反向工程的。请将第一个联接移动到子查询中,然后在那里使用
LIMIT
。谢谢Barmar。但是,这给了我一个错误:“#1060-重复的列名'customer_id'”需要将
SELECT*
替换为选择子查询中的特定列。太好了!谢谢你的帮助。这正是我想要的。按照你的建议,我也在订单上加了。