這是我的我的表的例子:MYSQL不同的查詢
id | name | foreign_id |
-------------------------
1 a 100
2 b 100
3 c 100
4 d 101
5 a 102
6 b 102
7 c 102
我想獲得與最新foreign_id在不同的文件(更大不一定是最大的,但)。 在這個例子中,它將與行4,5,6,7。任何人有任何想法?非常感謝你!
這是我的我的表的例子:MYSQL不同的查詢
id | name | foreign_id |
-------------------------
1 a 100
2 b 100
3 c 100
4 d 101
5 a 102
6 b 102
7 c 102
我想獲得與最新foreign_id在不同的文件(更大不一定是最大的,但)。 在這個例子中,它將與行4,5,6,7。任何人有任何想法?非常感謝你!
你可以嘗試像下面: -
SELECT Id,Table1.Name,Table1.Fid FROM Table1 INNER JOIN
(SELECT Name,Max(FId) AS FId FROM Table1 Group By Name)
Table2 ON Table1.FId=Table2.FId AND Table1.Name=table2.Name
此作品在SQL服務器ATLEAST。請檢查MySQL。對不起,我沒有MySQL來測試這個。
你可以這樣做:
select *
from table_name
where max_id_you_want = (select max(id_you_want) from table_name)
這個列表5,6和7並沒有列出問題中提到的4。 – 2010-03-21 16:22:47
是的,但它是解決方案的一種方式。我認爲最近的ID將是最大的,否則你需要找到另一種方式來獲取它。要獲得最大的所有id的集合,可以執行類似於從id_you_want所在的some_table中進行選擇的任何操作(查詢返回您正在查找的結果) – 2010-03-21 20:03:37
聽起來像是你只是想這樣的:
SELECT name, MAX(foreign_id)
FROM table
GROUP BY name;
如果你需要的ID(我猜你不會,因爲名字和foreign_id應該可能是唯一的,從而使ID列變得不必要),我認爲MySQL將允許您通過將該列添加到SELECT列表來獲得該列 - 儘管這是非標準SQL。如果你想要標準的SQL,那麼你需要像Ashish寫的東西。
SELECT * FROM table
GROUP BY name
having MAX(foreign_id);
經過測試和工作完美! – Patrick 2010-03-22 14:47:00