我正在尝试引用子查询以在case语句中使用该值。但是,在SELECT语句中我不能引用next_creation
,因为它只是抱怨该列不存在。我考虑将整个查询包装在CASE语句中,但CASE语句要求我多次运行查询,这看起来很傻。
我还尝试使用子查询执行CROSS JOIN
,但它抱怨无法在子查询中引用tg。内核错误:错误:对表“tg”的FROM子句条目的无效引用提示:表“tg”有一个条目,但不能从查询的这一部分引用它。
我也试过使用WITH
,但它基本上和CROSS JOIN有相同的结果。所以我甚至尝试添加两个WITH
子句,第一个查询在主OUTER
查询中是相同的,所以第二个可以使用值....我有一些错误。
是否有任何方法可以引用子查询,例如将其粘贴到要使用的变量中,同时仍允许子查询使用外部查询中的tg
?
SELECT *, (
SELECT
tg2.created
FROM tocom t
LEFT JOIN tocom_g_assoc ON tocom_g_assoc.table_id = t.id AND tocom_g_assoc.tocom_g_id != tg.id
LEFT JOIN tocom_g tg2 ON tg2.id = tocom_g_assoc.tocom_g_id
WHERE t.id IN ( SELECT t_id FROM tocom_g_assoc WHERE tocom_g_assoc.tocom_g_id = tg.id )
AND tg2.createdt > tg.created
AND tg2.created IS NOT NULL
ORDER BY tg2.created ASC
LIMIT 1
) next_creation
/*
Here I want to do as CASE statement, but for argument sake,
a simple next_creation - tg.dissolved_at would do
*/
FROM wp p
LEFT JOIN tocom_g tg ON tg.id = p.tocom_g_id
WHERE tg.dissolved_at IS NOT NULL
答案 0 :(得分:1)
我意识到了这个问题。
所以我把它作为一个选择,返回子查询。然后我将整个事物包装在另一个select中,并使该查询成为from语句。然后我可以用返回的值做任何我想做的事。