如何避免重复,同时连接两个表
问题描述:
我有两个表如何避免重复,同时连接两个表
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
但我需要这样
012结果Kerala - value 1
- value 2
- value 3
- value 4
值 '喀拉拉邦' 不应该被重复。
答
可以用户组CONCAT method.Pls检查下面的查询
SELECT t1.name,GROUP_CONCAT(t2.name) FROM test1 t1 INNER JOIN test2 t2 WHERE t1.id = t2.jid
+0
谢谢。它完美的作品:) –
答
我不认为这是可能的 - 你不能有空值返回值。
答
您可以使用下面的查询:
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)
每jid
在test2
表中。
答
试试这个
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;
你所要求的是一般显示的数据,而不是产生它的一个层来完成。因此,您应该保留您拥有的SQL,并在解决方案的不同层中删除重复项。 –