如何在连接两个表时避免重复

时间:2015-10-06 12:06:43

标签: mysql join

我有两张表

  1. test 1

  2. test 2

第一张表有

**id**  -   **name**

 1      -    kerala 

 2      -    Tamilnadu

第二张表

  **name**  -  **jid**

   value 1  -  1

   value 2  -  1

   value 3  -  1

   value 4  -  1

   value 5  -  2

我的查询

SELECT t1.name, t2.name
FROM test1 t1
INNER JOIN test2 t2
WHERE t1.id = t2.jid

现在我得到了这个结果

**name**    -  **name**

Kerala  -  value 1

kerala  -  value 2

kerala  -  value 3

kerala  -  value 4

但我需要这样的结果

Kerala  -  value 1

        -  value 2

        -  value 3

        -  value 4

不应重复“喀拉拉邦”的价值。

4 个答案:

答案 0 :(得分:2)

您可以使用用户组连接方法。请检查以下查询

 SELECT t1.name,GROUP_CONCAT(t2.name) FROM test1 t1 INNER JOIN test2 t2 WHERE t1.id = t2.jid

答案 1 :(得分:1)

您可以使用以下查询:

SELECT CASE 
          WHEN t2.name = t3.firstName THEN t1.name
          ELSE ''
       END AS name,   
       t2.name
FROM test1 t1
INNER JOIN test2 t2 ON t1.id = t2.jid
INNER JOIN (
   SELECT jid, MIN(name) AS firstName
   FROM test2
   GROUP BY jid) AS t3 ON t2.jid = t3.jid

只要MIN(name)表中每jidtest2有一条记录,就会生成所需的结果。

Demo here

答案 2 :(得分:1)

试试这个

SELECT  IF (@oldname = name1,'',name1),
        name2,
        @oldname:=name1 AS oldname FROM
  (
    SELECT t1.name AS name1, t2.name AS name2
    FROM test1 t1
    INNER JOIN test2 t2
    WHERE t1.id = t2.jid
  ) t,
  (SELECT @oldname:='' ) tmp;

答案 3 :(得分:0)

我认为这不可能 - 你不能在返回值中包含空值。