在单个查询中从MySQL中选择唯一值

Der*_*ker 2 mysql

我需要从数据库中选择只有一列具有特定值的所有行.也就是说,如果两行的"ABC"作为列的值,arbitrary则不返回它们.

我希望能够清楚地理解我所要求的内容.使用MySQL的DISTINCT关键字对于我需要做的事情是不可行的,因为使用它需要多次查询.我希望能够在一个漂亮,紧凑的查询中执行此操作,因为它将被频繁执行.我正在扩展我的应用程序以允许更高程度的并发性,而我当前的代码不会再削减它了.

目前,我正在使用DISTINCT选择相关列的每个唯一值,然后检查另一个查询中的每个值以查看它们是否只存在一次.如果是这样的话,保留它,如果没有,扔掉它.当然有更谨慎的方法来解决这个问题?

谢谢.

Joh*_*ica 7

SELECT * FROM table1 
GROUP BY the_column_that_must_be_unique
HAVING COUNT(*) = 1
Run Code Online (Sandbox Code Playgroud)

要只选择重复的值,然后只选择最新的值,那么我们可以将它们抛出,让我们简单地调用the_column_that_must_be_unique你:-)

SELECT t1.* FROM table1 t1
INNER JOIN table1 t2 ON (t1.u = t2.u AND t1.id > t2.id)  
Run Code Online (Sandbox Code Playgroud)

请注意,我假设id为自动递增的整数id,因此较大的id表示较新的项.如果那不是真的那么做

SELECT t1.* FROM table1 t1
INNER JOIN table1 t2 ON (t1.u = t2.u AND t1.id <> t2.id)
WHERE t1.atimestamp > t2.atimestamp  
Run Code Online (Sandbox Code Playgroud)