如何在WHERE中使用DISTINCT子句?例如:与WHERE的DISTINCT子句
SELECT * FROM table WHERE DISTINCT email; -- email is a column name
我想选择具有不同电子邮件地址的表中的所有列。
如何在WHERE中使用DISTINCT子句?例如:与WHERE的DISTINCT子句
SELECT * FROM table WHERE DISTINCT email; -- email is a column name
我想选择具有不同电子邮件地址的表中的所有列。
如果你的意思是其电子邮件是独一无二的所有列:
SELECT * FROM table WHERE email in
(SELECT email FROM table GROUP BY email HAVING COUNT(email)=1);
select t1.*
from YourTable as t1
inner join
(select email
from YourTable
group by email
having count(email) = 1) as t2
on t1.email = t2.email
您可以使用ROW_NUMBER()。您也可以指定条件。 (例如Name LIKE'MyName%
在下面的查询)
SELECT *
FROM (SELECT ID, Name, Email,
ROW_NUMBER() OVER (PARTITION BY Email ORDER BY ID) AS RowNumber
FROM MyTable
WHERE Name LIKE 'MyName%') AS a
WHERE a.RowNumber = 1
一个简单的查询将做到这一点:
SELECT *
FROM table
GROUP BY email
HAVING COUNT(*) = 1;
该操作没有指定SQL的风格,但该命令不会在SQL Server中运行,并在MySQL中产生不明确的结果。 – 2017-03-27 16:06:16
这是不是工作:
SELECT email FROM table1 t1
where UNIQUE(SELECT * FROM table1 t2);
我不知道有很多DBMS已经实现了UNIQUE谓词。你在使用哪一个?另外,我认为你向后查询了:不应该将'SELECT email'包装在'UNIQUE()'谓词中?我认为你需要某种连接子句('FROM table1 t2 WHERE t2.email = t1.email')。 – JDB 2016-08-20 03:45:27
查询:
Select *, (Select distinct email) from Table1
您可以使用HAVING
条款。
SELECT *
FROM tab_name
GROUP BY email_id
HAVING COUNT(*) = 1;
这是矛盾的条款。你的意思是“选择电子邮件是唯一的所有列”? – 2011-04-10 08:19:06
@adam: - 是的! – Mohit 2011-04-10 08:20:05
好的,回答了你的问题。 – 2011-04-10 08:21:00