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`
我在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`