繁体   English   中英

如何将父级的值传递给子查询或子子查询

[英]how to pass the parent's value into sub-query or sub sub-query

请参考下面的示例查询::

    SELECT
    a.id,
    a.status,
    a.updated_at,
    b.id,
    b.updated_at,
    IF((a.status = 1 OR a.status = 2), 
   (IF(a.status = 1), 
         (SELECT COUNT(*) FROM coconut c WHERE c.datetime BETWEEN a.updated_at AND b.updated_at) , 
         (SELECT COUNT(*) FROM coconut c WHERE c.datetime BETWEEN a.updated_at AND NOW()) ), 0) AS 'ab'
    FROM apple a
    LEFT JOIN banana b

IF 条件中的子查询是给我错误消息的问题:“未知列 a.updated_at”和“未知列 b.updated_at”,当我试图从表apple和表banana中获取数据时。

有没有其他方法可以将表apple和表banana的值传递到子查询中?

您可以通过CASE语句(本质上是IF-THEN-ELSE 语句)运行计数,该语句比IF function 更灵活,因为它允许多个分支(从上一个问题中阅读更多关于它的信息)。 另外,不要忘记在LEFT JOIN之后包含您的JOIN条件。

SELECT
a.id,
a.status,
a.updated_at,
b.id,
b.updated_at,
CASE WHEN (a.status = 1) THEN
     (SELECT COUNT(*) FROM coconut c WHERE c.datetime BETWEEN a.updated_at AND b.updated_at)
     WHEN (a.status = 2) THEN 
     (SELECT COUNT(*) FROM coconut c WHERE c.datetime BETWEEN a.updated_at AND NOW())
     ELSE 0
END AS 'ab'
FROM apple a
LEFT JOIN banana b ON a.id = b.id

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM