MySQL 两个选择的连接结果

MySQL concat result of two selects

我在MySQL中使用以下查询将两个表中的一个字段合计为一个数字:

SELECT 
(SELECT sum(number)
FROM table1 
WHERE mydate IS NOT NULL) +
(SELECT sum(number)
FROM table2 
WHERE mydate IS NOT NULL)
AS sumOfTheTwo

这工作正常,sumOfTheTwo 给了我正确的结果。

问题是,我想将这个数字输出为货币。 通常我会使用以下内容:

concat("$", format(sumOfTheTwo, 2))

我不知道在这种情况下我会怎么做。 有人可以提出建议吗?

谢谢!

编辑/解决方案:

如 Oto Shavadze 所示,以下解决了这个问题:

SELECT concat("$", format( 

(SELECT sum(number)
FROM table1 
WHERE mydate IS NOT NULL) +
(SELECT sum(number)
FROM table2 
WHERE mydate IS NOT NULL)

, 2)) as res

特别看看 MySQL string format functions. FORMAT(), CONCAT() and CONCAT_WS()

FORMAT 可让您将字符串转换为数字,而 CONCAT 将用于附加货币符号。

SELECT concat("$", format( 

    (SELECT sum(number)
    FROM table1 
    WHERE mydate IS NOT NULL) +
    (SELECT sum(number)
    FROM table2 
    WHERE mydate IS NOT NULL)

, 2)) as res

你必须 Concat 在第一个块我尝试这个并为我工作:

SELECT 

 concat("$", format(
    (
    -- block 1
    (SELECT sum(number)
    FROM table1 
    WHERE mydate IS NOT NULL) +
    -- block 2
    (SELECT sum(number)
    FROM table2 
    WHERE mydate IS NOT NULL)

     ), 2))

AS sumOfTheTwo ;

就这么简单。

只需将 concat() 与您当前的查询一起使用:

SELECT 
concat('$', (SELECT sum(number)
FROM table1 
WHERE mydate IS NOT NULL) +
(SELECT sum(number)
FROM table2 
WHERE mydate IS NOT NULL))
AS sumOfTheTwo

请注意,在应用程序逻辑中执行此格式化可能比在 sql 中执行此格式化更有效。

SELECT CONCAT('$',((SELECT sum(number)
FROM table1 
WHERE mydate IS NOT NULL) +
(SELECT sum(number)
 FROM table2 
 WHERE mydate IS NOT NULL)));

在 sql 服务器中我有一个例子:

 SELECT 
 '$'+
cast((SELECT 1) + (SELECT 2) as varchar(50)) AS sumOfTheTwo  

使用 concate() with first select and use format() 在小数点 (.) 后添加零个数。 formate()中的2表示小数点后2个零。

select concat("$", format(
(SELECT sum(number) FROM table1 WHERE mydate IS NOT NULL) + 
(SELECT sum(number) FROM table1 WHERE mydate IS NOT NULL), 2)) 
as sumOfTheTwo`