【发布时间】:2021-04-05 08:00:49
【问题描述】:
我有这样的数据:
| CODE | EMAIL0 | EMAIL1 | EMAIL2 | EMAIL3 | EMAIL4 | EMAIL5 | EMAIL6 |
|---|---|---|---|---|---|---|---|
| ABC | abc@gmail.com | q@gmail.com | q@gmail.com | f@gmail.com | h@gmail.com | u@gmail.com | y@gmail.com |
| DEF | def@gmail.com | k@gmail.com | NULL | NULL | NULL | NULL | g@gmail.com |
| XYZ | xyz@gmail.com | i@gmail.com | i@gmail.com | NULL | NULL | NULL | NULL |
我需要查询只返回带有CODE=DEF 的第二行,因为EMAIL1 到EMAIL6 都是唯一值。
基本上我需要EMAIL1 到EMAIL6 具有唯一值的行。
这里CODE 永远是独一无二的。
我尝试使用CROSS JOIN,但没有成功。
【问题讨论】:
-
你真的应该修正你的设计,有 6 个电子邮件栏打破了 3NF 的基本规则之一。
标签: sql sql-server count distinct lateral-join