這裏是我的問題:SQL加入兩個表
我有兩個表。表A的每個條目在表B中具有與ID匹配的多個條目。我現在想要得到表A的所有條目,並且有一個表B的數據條目 - 這個表中具有最高ID的條目。
表A具有ID
表B具有自己的ID和ID_OF_TABLE_A(對於兩種之間的關係)
表A具有一對多關係表B.我希望所有表A的條目與B中ID最高的條目相匹配。有什麼方法可以在SQL語句中實現這一點?我嘗試了各種連接,因爲我需要選擇結果中匹配條目的信息。
這裏是我的問題:SQL加入兩個表
我有兩個表。表A的每個條目在表B中具有與ID匹配的多個條目。我現在想要得到表A的所有條目,並且有一個表B的數據條目 - 這個表中具有最高ID的條目。
表A具有ID
表B具有自己的ID和ID_OF_TABLE_A(對於兩種之間的關係)
表A具有一對多關係表B.我希望所有表A的條目與B中ID最高的條目相匹配。有什麼方法可以在SQL語句中實現這一點?我嘗試了各種連接,因爲我需要選擇結果中匹配條目的信息。
如何
SELECT *
FROM tableA a
INNER JOIN tableB b ON a.ID = b.ID_OF_TABLE_A
WHERE b.ID = (SELECT MAX(ID) FROM tableB c WHERE b.ID = c.ID)
我用這個,它完美的工作。所有其他人似乎也工作。這麼多好的答案,謝謝大家! – 2014-12-02 12:17:30
試試這個:
SELECT a.*, b.*
FROM tableA a
LEFT OUTER JOIN (SELECT b.*
FROM tableB b
INNER JOIN (SELECT ID_OF_TABLE_A, MAX(ID) bID
FROM tableB
GROUP BY ID_OF_TABLE_A
) c ON b.ID_OF_TABLE_A = c.ID_OF_TABLE_A AND b.ID = c.bID
) AS b ON a.ID = b.ID_OF_TABLE_A;
因爲b有點令人困惑 – Strawberry 2014-12-02 10:02:18
這裏您篩選從表中需要b將分組子句的幫助和最大的功能,如行您可以使用內嵌視圖所以:
select a.*, b.*
from a
join (
select max(id) as id_b_max, id_a
from b
group by id_a
) b
on a.id = b.id_a;
測試了:
create table a(id int);
create table b(id int, id_a int);
insert a values (1);
insert b values(1, 1);
insert b values(2, 1);
insert b values(3, 1);
未宣佈FK對象本身,但答案仍然有效。 – 2014-12-02 10:08:21
select a.id, max(b.id)
from table_a a join table_b b on a.id = b.table_a_id
group by a.id
這應該工作。預先篩選出ID_OF_TABLE_A的最大ID。然後加入該ID。
SELECT A.*, B.*
FROM A
INNER JOIN (SELECT max(ID) AS id, ID_OF_TABLE_A
FROM B
GROUP BY ID_OF_TABLE_A) AS grp_b
ON grp_b.ID_OF_TABLE_A = a.ID
INNER JOIN B ON b.ID = grp_b.id
下面幾個正確的答案。他們都工作得很好 - 比其他人更復雜。 – 2014-12-02 12:17:54