[英]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.