2011-03-18 231 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