MySQL php - 如何获取最后3行但不计算重复项

时间:2015-02-12 07:55:08

标签: php mysql

您好我想获取最后3个唯一行但允许返回任何具有相同文件名的重复项。在下面的示例中,我应该返回5行。

所以我应该visa2 f9ed287 visa1 f9ed287 visa f9ed287 rose 996fa07feel e96ba65

Emo Table
---------

id  | s     | filename
----------------------
59  | visa2 | f9ed287
58  | visa1 | f9ed287
57  | visa  | f9ed287
56  | rose  | 996fa07
55  | feel  | e96ba65
54  | kick  | c716cea
53  | yay   | 8e1ff5d

这是我正在使用的代码,其中不包含结果中的重复项

$statement = $pdo->prepare("SELECT s, f FROM emos
                             GROUP BY (f)
                             ORDER BY id DESC                                 
                             LIMIT 3");
$statement->execute(array($room));

3 个答案:

答案 0 :(得分:1)

你的问题不是很好,但我相信这就是你想要的:

SELECT s, f
FROM emos
WHERE
    f IN (SELECT DISTINCT(f) FROM emos ORDER BY id DESC LIMIT 3)
ORDER BY f, id;

如果我误解了,请重新提出您的问题,我会更新我的回答

答案 1 :(得分:1)

尝试使用此查询:

SELECT e.s, e.filename 
FROM emos e
INNER JOIN (SELECT filename FROM emos GROUP BY filename ORDER BY id desc LIMIT 3) as t ON t.filename = e.filename

答案 2 :(得分:0)

这应该通过加入自己的emos来获得最后三个文件名:

SELECT e1.s, e1.f 
FROM emos e1
JOIN (
    SELECT f 
    FROM emos 
    GROUP BY f 
    ORDER BY id DESC 
    LIMIT 3
) e2 ON e1.f=e2.f
ORDER BY e1.id DESC;