2011-03-18 260 views
0

我有以下結構兩個表:MySQL查詢幫助

TABLE_1

No Name 
1 Test1 
2 Test2 
2 Test3 

TABLE_2

t_no t_name no 
1  tname1 1 
2  tname2 2 

我如何編寫一個查詢得到結果下面

t_no t_name Name 
1  tname1 Test1 
2  tname2 Test3 

Table1兩個記錄具有相同id但不同的值(即難度)。

+1

你怎麼決定要TEST3而不是test2的?從關係的角度來看,它們是平等的。你應該在table1中有一個不同於這兩個值的列(NO_ORDER或其他) – Konerak 2011-03-18 14:46:36

+0

表1中的第三行有錯誤嗎?它應該是'3 Test3'嗎? – 2011-03-18 14:48:31

+0

沒有......只有這樣 – 2011-03-18 14:49:24

回答

0

假設你的表被命名爲table_1table_2

SELECT 
    table_2.t_no, 
    table_2.t_name, 
    table_1.Name 
FROM table_1 JOIN table_2 ON table_1.no = table_2.t_no 

或另一種方法:

SELECT 
    table_2.t_no, 
    table_2.t_name, 
    table_1.Name 
FROM table_1, table_2 
WHERE table_1.no = table_2.t_no 
+0

表1有2個記錄值,所以我們怎樣才能得到Test3 – 2011-03-18 14:48:42

+1

有了這個表結構,你就不能得到Test3了。表1中必須有一個標識(主鍵)列,它與表1以1:1直接相關。否則,您將始終得到兩個值,其中'No = 2' – 2011-03-18 14:52:40

1
SELECT 
    grpt1.t_no, 
    grpt1.t_name, 
    table_2.Name 
FROM table_2 
    JOIN 
    (SELECT t_no 
      , MAX(t_name) 
     FROM table_1 
     GROUP BY t_no 
    ) AS grpt1 
    ON table_2.no = grpt1.t_no