我有两个具有相同结构的表:
id name
1 Merry
2 Mike
and
id name
1 Mike
2 Alis
我需要将第二个表合并为第一个保持唯一名称,因此结果是:
id name
1 Merry
2 Mike
3 Alis
是否可以使用MySQL查询执行此操作,而不使用PHP脚本?
答案 0 :(得分:8)
这不是连接(设置乘法),这是一个联合(设置加法)。
SELECT @r := @r + 1 AS id, name
FROM (
SELECT @r := 0
) vars,
(
SELECT name
FROM table1
UNION
SELECT name
FROM table2
) q
答案 1 :(得分:2)
这将从table1中选择所有名称,并将那些与table2中不在table1中的所有名称组合在一起。
(
select *
from table1
)
union
(
select *
from table2 t2
left join table1 t1 on t2.name = t1.name
where t1.id is null
)
答案 2 :(得分:1)
使用:
SELECT a.id,
a.name
FROM TABLE_A a
UNION
SELECT b.id,
b.name
FROM TABLE_B b
UNION将删除重复项。
答案 3 :(得分:0)
如评论所述,这完全取决于你的'id'的含义,因为在这个例子中,它没有任何意义。
SELECT DISTINCT(name) FROM t1 JOIN t2 ON something
如果你只想要名字
SELECT SUM(something), name FROM t1 JOIN t2 ON something GROUP BY name
如果你想通过
做一些小组SELECT DISTINCT(name) FROM t1 JOIN t2 ON t1.id = t2.id
如果id是相同的
答案 4 :(得分:0)
SELECT DISTINCT COALESCE(t1.name,t2.name) FROM
mytable t1 LEFT JOIN mytable t2 ON (t1.name=t2.name);
将为您提供2个表中唯一名称的列表。如果你想让他们获得新的ID(就像Alis在你想要的结果中所做的那样),那就是其他的东西,需要回答几个问题: