2017-08-03 65 views
0

我想在下次选择时使用第一个子查询结果。但它没有看到row1,因为它不是数据库中的表。我怎么解决这个问题?在其他查询中使用派生子查询

UPDATE transactions, (SELECT 
        card_id, 
        id, 
        card_sum_before, 
        card_sum_after, 
        amount, 
        dt 
        FROM transactions 
        WHERE status = 1 AND 
         card_id = 1 
        ORDER BY dt ASC) AS counted_table, 
    (SELECT 
row2.id             AS id, 
(row1.card_sum_after - row2.amount - row2.card_sum_after) AS difference 
FROM counted_table AS row1 
INNER JOIN counted_table AS row2 ON row2.id = row1.id + 1 
ORDER BY row1.dt ASC) selected 
SET transactions.difference = selected.difference 
WHERE transactions.id = selected.id` 
+2

请参阅:[为什么我应该为我认为是非常简单的SQL查询提供一个MCVE?](https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an -mcve-for-what-looks-to-the-a-very-simple-sql-query) – Strawberry

+0

请提供示例表结构和数据 – Dawn

回答

0

请做类似的事情,将第一个查询输出存储到临时表中,然后在所需的任何查询中使用该临时表。