Mysql 使用不同的
我有两张表,Mysql 使用不同的,mysql,Mysql,我有两张表,follow和following 跟随 +---------+----------------+ | user_id | follow_user_id | +---------+----------------+ | 1 | 2 | | 2 | 3 | | 3 | 4 | | 100 | 10 | +---------+----------
follow
和following
跟随
+---------+----------------+
| user_id | follow_user_id |
+---------+----------------+
| 1 | 2 |
| 2 | 3 |
| 3 | 4 |
| 100 | 10 |
+---------+----------------+
以下内容
+---------+-------------------+
| user_id | following_user_id |
+---------+-------------------+
| 1 | 2 |
| 3 | 4 |
| 4 | 6 |
| 200 | 500 |
+---------+-------------------+
我想要两张没有重复的桌子
这是我想要的结果
+---------+----------------+-----------+
| user_id | target_user_id | category |
+---------+----------------+-----------+
| 1 | 2 | follow |
| 2 | 3 | follow |
| 3 | 4 | follow |
| 4 | 6 | following |
| 100 | 10 | follow |
| 200 | 500 | following |
+---------+----------------+-----------+
条件1-删除重复的行
条件2-必须使用每个表的名称添加类别列
条件3-如果类别重复,它可以是follow
或follow
。没关系
条件4-跟随用户id
作为目标用户id
和跟随用户id
作为目标用户id
在这种情况下,我应该使用join吗?还是工会
任何建议,非常感谢
谢谢 只需使用
union
和groupby
,SQL如下:
select
user_id,target_user_id,min(tag) as category
from
(
select user_id,follow_user_id as target_user_id, 'follow' as tag from follow
union
select user_id,following_user_id as target_user_id, 'following' as tag from following
) tmp
group by
user_id,target_user_id
order by
user_id,target_user_id;
+---------+----------------+-----------+
| user_id | target_user_id | category |
+---------+----------------+-----------+
| 1 | 2 | follow |
| 2 | 3 | follow |
| 3 | 4 | follow |
| 4 | 6 | following |
| 100 | 10 | follow |
| 200 | 500 | following |
+---------+----------------+-----------+
6 rows in set (0.00 sec)
“条件3-如果类别重复,它可以是follow或follow。这没关系。”如果follow和follow在这里的意思差不多,为什么有两个表?理想情况下,您应该制作一个表
event
,其中有一个event\u type\u id
,该表保存follow
或follow
,从event\u type
表可以更容易查询。为什么有两个表?我知道,但这是遗留表,我必须将其合并以重用。对不起。我错过了一些条件。你能再检查一遍吗?@隐藏你的条件4是什么意思?follow_user_id作为目标_user_id和follow_id作为目标_user_id您知道follow_id
和follow_id
列名不同。所以我想把它合并到target\u user\u id
列。@Hide我看到你更新了预期结果,这与我的答案结果相同。那么我的答案有什么问题吗?我更新了两次我的问题。请参考。follow和following具有不同的列名(following\u user\u id
,following\u user\u id
)