挂起mysql查询

挂起mysql查询,mysql,sql,join,Mysql,Sql,Join,我对以下查询有问题 select ord.order_id, ordProduct.product_id, coupProd.product_id, coup.date_end as DateEnd, coup.coupon_id from `order` ord inner join order_product ordProduct on ord.order_id = ordProduct.order_id inner join coupon_product coupProd on ordP

我对以下查询有问题

select
ord.order_id, 
ordProduct.product_id,
coupProd.product_id,
coup.date_end as DateEnd, coup.coupon_id
from `order` ord
inner join order_product ordProduct on ord.order_id = ordProduct.order_id
inner join coupon_product coupProd on ordProduct.product_id = coupProd.product_id
inner join coupon coup on coupProd.coupon_id = coup.coupon_id
where (coup.date_end > curdate());

如果我记住where子句,查询将执行良好,否则它将挂起。有什么想法吗?

这本身不是一个解决方案,但作为一种变通方法,您可以将其作为嵌套查询来完成。i、 e

SELECT * FROM (
    SELECT
    ord.order_id, 
    ordProduct.product_id,
    coupProd.product_id,
    coup.date_end AS DateEnd, coup.coupon_id
    FROM `order` ord
    INNER JOIN order_product ordProduct ON ord.order_id = ordProduct.order_id
    INNER JOIN coupon_product coupProd ON ordProduct.product_id = coupProd.product_id
    INNER JOIN coupon coup ON coupProd.coupon_id = coup.coupon_id)
WHERE (DateEnd > CURDATE());

它是否加快了将where子句移动到内部联接的速度?coupProd.coupon\u id=coup.coupon\u id和coup.date\u end>curdate上的内部连接优惠券coup;这里涉及多少条记录?where子句和用法及条件有什么区别。只是出于好奇这解释了区别:不确定在这种情况下是否能解决问题。@AshReva:WHERE用于指定筛选条件,while用于基于多个条件分组条件进行筛选。