mysql - 最多选择 2 行,其中一列具有相同的值

标签 mysql sql

我正在尝试选择最多 2 行,其中一列具有相同的值。即:

id  title   accountid   date
1   job 1       1      Oct. 1
2   job 2       1      Oct. 1
3   job 3       1      Oct. 1
4   job 1       2      Oct. 2
5   job a       3      Oct. 2
6   job z       4      Oct. 3
7   job 2       2      Oct. 3
8   job 3       2      Oct. 8

我要选择

    1   job 1       1      Oct. 1
    2   job 2       1      Oct. 1
                                   <----- Skip this row because we already 
                                          have 2 from account 1
    4   job 1       2      Oct. 2
    5   job a       3      Oct. 2
    6   job z       4      Oct. 3
    7   job 2       2      Oct. 3

我现在用来选择的是这样的:

SELECT * 
FROM table 
ORDER BY date DESC, RAND() 

我研究了一下使用 HAVING COUNT(accountid) <= 2但这只会导致困惑。我对使用 sql 还很陌生。

感谢您的帮助!

更新:

您好,感谢您的快速回复。我已经尝试了他们中的每一个,但似乎无法让他们工作。我想出了一种使用 php 来限制每个帐户 id 的作业的方法。再次感谢您花时间和精力帮助我解决这个问题。

最佳答案

set @id := 0, @acid := 0;
select t.id, title, accountid, `date`
from 
    t
    inner join (
        select 
            id, 
            if(@acid = accountid, @i := @i + 1, @i := 1) as i,
            @acid := accountid as acid
        from t
        order by accountid, `date` desc
    ) s on t.id = s.id
where s.i <= 2

关于mysql - 最多选择 2 行,其中一列具有相同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12845519/

相关文章:

mysql - 选择具有相同值的行,每个行都有限制

sql - 检查添加后的任何结果组合是否等于变量

mysql - SQL 查询 - 连接先前连接的所有行

c# - 带有参数的mysql odbc插入

sql - 使用事务隔离级别锁定 SQL Server 中的数据

php - 简单地尝试更新 mysql 数据库中的项目

php - 在 MySQL 中从 m 个数字的字符串中搜索匹配 n 个数字

php - 选择不同的通知并准备更清晰的通知消息

mysql - 无法在 Mac OS X 上安装 MySQL

php - Laravel 获取最近加入表的日期