gpt4 book ai didi

mysql - 选择 3 列对一列,不进行并集

转载 作者:行者123 更新时间:2023-11-29 10:37:38 26 4
gpt4 key购买 nike

我尝试在不使用联合(系统需要)的情况下将三列(文本 - 相同类型)选择为一列,但我想不出正确的方法。

select count(distinct(r)) as count 
from (
select column1 as r from Table1
union all
select column2 as r from Table1
union all
select column3 as r from Table1
) a

这是原始查询,我尝试使用 CONCAT 和 COALESCE,但这不是我想要的。我不想将两个字符串合并为一个,我希望所有选择行都位于同一列中。

例如 - example - img

3 列 - 收件人、抄送和密件抄送(电子邮件收件人)。我想知道我向多少人发送了电子邮件。无需双倍电子邮件(每个人都可以在任何列上)

感谢您的帮助!我很感激。

最佳答案

使用COUNT(DISTINCT ...):

SELECT COUNT(DISTINCT email) FROM (
SELECT DISTINCT firstColumn AS email FROM table
UNION
SELECT DISTINCT secondColumn AS email FROM table
UNION
SELECT DISTINCT thirdColumn AS email FROM table) AS Recipients

更好的是:由于您在外部查询上运行 DISTINCT,因此不要浪费时间在内部查询中执行此操作:

SELECT COUNT(DISTINCT email) FROM (
SELEC firstColumn AS email FROM table
UNION
SELEC secondColumn AS email FROM table
UNION
SELEC thirdColumn AS email FROM table) AS Recipients

请参阅此处的 fiddle 示例:http://sqlfiddle.com/#!9/edda57/10

关于mysql - 选择 3 列对一列,不进行并集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46132040/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com