mysql - SQL - 如何组合(UNION?)3列,同时在不同列上使用WHERE子句

标签 mysql sql merge union where-clause

我正在尝试将同一个表中的 3 个电子邮件列连接到 1 个大电子邮件列中,我可以使用以下 SQL 来完成此操作:

SELECT email
FROM (
SELECT email
FROM accounts
UNION 
SELECT email2
FROM accounts
UNION 
SELECT email3
FROM accounts
)accounts  WHERE email LIKE '%@%'

但我也希望能够仅返回同一表(帐户组)中不同列 = 特定值的行。例如,我认为可行的:

SELECT email, accountgroup
FROM (

SELECT email, accountgroup
FROM accounts
UNION 
SELECT email2, accountgroup
FROM accounts
UNION 
SELECT email3, accountgroup
FROM accounts
)accounts
WHERE email LIKE  '%@%'
AND accountgroup = 'Vyrav'

但这第二条语句并未按预期工作,并且仅返回 1 行。我认为 UNION 正在合并 accountgroup 列值相同的行(这将是所有行)。

如果我修改第一条语句以使最后一行如下所示:

)accounts  WHERE email LIKE '%@%' AND accountgroup='Vyrav'

它说“where 子句”中有一个“未知列“accountgroup””

任何人都可以建议我在这里做错了什么,或者我应该做什么?

提前致谢,非常感谢任何帮助。

最佳答案

正如您所怀疑的,UNION 将统一相同的结果。相反,您应该使用 UNION ALL 来保留所有原始行,即使它们是相同的。

关于mysql - SQL - 如何组合(UNION?)3列,同时在不同列上使用WHERE子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19858123/

相关文章:

php - 为 MySql 行提供几个唯一的 ID,并使用 php 显示具有一个特殊 ID 的所有行

mysql - #1005 - 无法创建表 errno : 150 Magento

php - 检查返回数组中是否有更多引用递归的 MYSQL 查询是什么?

sql - generate_series 用于创建月份列表以获取缺失日期

html - 如何使用 BeautifulSoup/lxml 将子 DOM 节点合并/折叠到父节点中?

SVN不同树合并

R ggplot2 与 shapefile 和 csv 数据合并以填充多边形 - 特定

MySQL查询日期在本周的行

php - 将日期时间插入数据库 PHP

java - 将 uuid(UUID 类型)插入 mysql 时报告键 PRIMARY 的重复条目