我如何在mysql中加入两个不同的表

时间:2014-11-03 04:48:46

标签: mysql join phpmyadmin

这是table1:

    id  name    m1  m2  m3  total   itemno
    1   raj     10  10  10  30      1
    2   ram     60  60  60  180     1
    3   kumar   70  70  70  210     1
    4   kanna   50  50  50  150     1
    5   vivek   64  64  91  200     1
     5  vivek   90  90  90  270     2

这是table2:

    id  name          mark1     mark2   mark3   itemno
    101 vivek            78     78       78     1
    102 vivekkanna       89     88       78     1
    103 rajagopalan      97     90       98     1
    104 kumar            69     54       56     1
    101 vivek            90     90       90     2

我想将这两个表连接成一个如下所示的结果集:

    id  name    m1  m2  m3  total mark1     mark2   mark3 item no
    1   raj     10  10  10  30     0         0       0     1 
    2   ram     60  60  60  180    0         0       0     1
    3   kumar   70  70  70  210    69       54      56     1
    4   kanna   50  50  50  150    0         0       0     1
    5   vivek   64  64  91  200    78       78      78     1
    5   vivek   90  90  90  270    90       90      90     2

1 个答案:

答案 0 :(得分:0)

似乎你想要一个常规的L​​EFT JOIN,如果table2中的行不存在,则返回一个默认值;

SELECT t1.id, t1.name, t1.m1, t1.m2, t1.m3, 
       COALESCE(t2.mark1, 0)  mark1, COALESCE(t2.mark2, 0)  mark2, t1.itemno
FROM table1 t1
LEFT JOIN table2 t2 ON t1.name = t2.name AND t1.itemno = t2.itemno
ORDER BY t1.id, t1.itemno

An SQLfiddle to test with

我们使用LEFT JOIN来获取与table1中的行不匹配的所有table2字段的默认NULL值,然后使用COALESCE将它们变为0。