mysql - 在连接表中选择不同的值

标签 mysql

简化了我正在解决的问题,但我认为以下是其要点:

我有两个表(TableA 和 TableB),通过 LEFT JOIN 连接。

我需要从TableA中按时间倒序获取10条记录;但这十个结果中的每一个在 TableB.foo 中都有唯一的值。

A.id 为 1,A.date 为两天前,B.foo 为“cat”。
A.id 是 2,A.date 是昨天,B.foo 是“cat”。
A.id 是 3,A.date 是今天,B.foo 是“狗”。
A.id 是 4,A.date 是三天前,B.foo 是“pig”。
A.id 是 5,A.date 是四天前,B.foo 是“dog”。

我希望查询的前 3 个结果是 3,2,4(并且根本不返回 1 和 5)。

这可以通过单个 MySQL 查询来实现吗?

如果做不到这一点,通过多个步骤获得所需结果集的最有效策略是什么?

最佳答案

SELECT T1.id, T1.date
FROM (SELECT A.id id, B.foo foo, A.date date
      FROM A JOIN B
      ON A.b_id = B.id) T1
JOIN (
    SELECT B.foo foo, MAX(A.date) maxdate
    FROM A JOIN B
    ON A.b_id = B.id
    GROUP BY B.foo) T2
ON T1.foo = T2.foo and T1.date = T2.maxdate
ORDER BY T1.date DESC
LIMIT 10

关于mysql - 在连接表中选择不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12846995/

相关文章:

mysql - 与 SQL Source Control、SQL Automation Pack 和 Jenkins 的持续集成

php - 如何使用 NULL-safe 等于 mysql operator with idiorm & paris

php - 多选进入输入框

mysql - 如何处理多父表

mysql - 查询 MYSQL 中单列中所有值都匹配的项目

mysql 比较相似字符串的函数

python - 数据未插入到 Flask sqlalchemy 中

mySQL表,主键

mysql - 使用 phpmyadmin 在 Mysql 中创建表

python - 如何在一行中显示多个字段? (Django 管理员)