2015-02-12 62 views
0

你好,我想獲得最後3個獨特的行,但允許任何具有相同的文件名重複也可以返回。在下面的例子中,我應該返回5行。MySQL的PHP​​ - 我怎樣才能得到最後3行,但不計算重複

所以我應該得到visa2 f9ed287visa1 f9ed287visa f9ed287rose 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)); 
+0

'visa2 f9ed287 visa1 f9ed287簽證f9ed287上漲996fa07和感覺e96ba65'那些是5,而不是3 – 2015-02-12 07:57:28

回答

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 
+0

謝謝!它的作品:) – dragonpunch 2015-02-12 08:56:56

+0

@dragonpunch歡迎:) – iubema 2015-02-12 09:17:00

1

你的問題沒有很好地形成的代碼,但我相信這是你想要的:

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

如果我有誤解,請改寫你的問題,我會更新我的答案

+0

該查詢犯規來看,我得到這個錯誤'例外 'PDOException' 有消息「SQLSTATE [42000]:語法錯誤或訪問衝突:1235這個版本的MySQL還不支持'LIMIT&IN/ALL/ANY/SOME子查詢''' – dragonpunch 2015-02-12 08:29:54

+0

這是事實,MySQL缺少子查詢LIMITs .. iubema有正確的調整。 – 2015-02-12 09:26:01

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;