我有两张表
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
不应重复“喀拉拉邦”的价值。
答案 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)
表中每jid
个test2
有一条记录,就会生成所需的结果。
答案 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)
我认为这不可能 - 你不能在返回值中包含空值。