Mysql 如何在一个查询中对两个不同的表执行相同的查询

Mysql 如何在一个查询中对两个不同的表执行相同的查询,mysql,Mysql,第一个问题: SELECT `id` FROM (`videos`) WHERE `name` LIKE '%Dragon Ball Z (U.S.)%' 第二 SELECT `vid_id` as id FROM (`other_names`) WHERE `name` LIKE '%Dragon Ball Z (U.S.)%' GROUP BY `vid_id` 我只想得到一个由LIKE组成的唯一ID列表。用“UNION”替换“and second”: SELECT `id`

第一个问题:

SELECT `id`
FROM (`videos`)
WHERE  `name`  LIKE '%Dragon Ball Z (U.S.)%' 
第二

SELECT `vid_id` as id
FROM (`other_names`)
WHERE  `name`  LIKE '%Dragon Ball Z (U.S.)%'
GROUP BY `vid_id`

我只想得到一个由LIKE组成的唯一ID列表。

用“UNION”替换“and second”:

SELECT `id`
FROM (`videos`)
WHERE  `name`  LIKE '%Dragon Ball Z (U.S.)%' 
UNION
SELECT `vid_id` as id
FROM (`other_names`)
WHERE  `name`  LIKE '%Dragon Ball Z (U.S.)%'

与UNION ALL相反,UNION ALL已经只返回唯一的项,所以您不需要GROUP BY或SELECT DISTINCT。如果您认为UNION更清晰,可以编写UNION DISTINCT,但可以省略它,因为这是UNION的默认行为。

两个表的定义?它们是否与外键相关?@GelozTrol Union不会从查询中删除duplicated,因此查询1返回duplicate,而查询2是不同的,如果将两者合并,则将删除查询1和查询2重叠的任何内容,但查询1中的重复项将保留。如果我错了,请纠正我。我想这就是为什么我们要这么做的原因UNION@Churk你试过了吗?正如我所描述的,UNION和UNION DISTINCE之间没有区别。只有当您不想删除重复时,才需要使用UNION ALL,但@aTei明确要求使用唯一ID。请看这里:@Churk我刚刚测试了这个,它是正确的,联合将从最终结果集中删除重复项,包括其中一个子查询内部的重复项。我尝试了这个查询,但得到“1064-您的SQL语法有错误;”。为什么会这样?得到了原因-表名周围的括号