有没有办法将这两个MySQL查询合并到一个语句中?

问题描述 投票:0回答:1

我正在尝试对 select 进行一些动态变量计算,并在 where 语句中引用这些变量。搜索后,以下内容是我能够得到的最接近的信息,感谢 Jonas 的帖子WHERE 子句中的 MySQL 用户定义变量

我正在考虑输出是地址(来自原始表、@bitcoin 和 @cash_value)的地方,而不是使用两个单独的选择语句,如下所示。

select @address := address, @bitcoin := (value / power(10, 8)), @cash_value := @bitcoin * 43913.7515932587 FROM knownaddresses_bitcoin WHERE address = '111111111111111111112czxoHN';
select @address, @bitcoin, @cash_value where @cash_value > 1;
mysql variables select where-clause
1个回答
0
投票

您在 MySQL 中使用用户定义变量的方向是正确的。但是,MySQL 不允许直接在 WHERE 子句中使用用户定义变量的别名。您可以通过使用子查询或派生表来解决此限制。这是使用派生表的示例:

SELECT address, bitcoin, cash_value
FROM (
    SELECT 
        address,
        value / POWER(10, 8) AS bitcoin,
        (value / POWER(10, 8)) * 43913.7515932587 AS cash_value
    FROM knownaddresses_bitcoin
    WHERE address = '111111111111111111112czxoHN'
) AS derived_table
WHERE cash_value > 1;

此查询使用子查询根据指定地址的knownaddresses_bitcoin 中的值列来计算比特币和cash_value。然后,外部查询根据 cash_value 大于 1 来过滤结果。

记得将“111111111111111111112czxoHN”替换为您有兴趣查询的具体地址。

这样,您就可以避免使用用户定义的变量,并根据单个 SQL 语句中的计算值实现所需的过滤。

© www.soinside.com 2019 - 2024. All rights reserved.