2012-02-27 50 views
0

首先查询:如何在一个查询在两个不同的表上执行相同的查询

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列表。

+0

两张表的定义?他们是否与外键有关? – vulkanino 2012-02-27 16:28:00

回答

2

用'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(相对于UNION ALL)已经只返回独特的物品,这样你就不会需要GROUP BYSELECT DISTINCT。如果您认为它更清晰,您可以编写UNION DISTINCT,但可以省略它,因为它是默认行为UNION

+0

@GelozTrol Union不会从查询中删除重复项,以便查询1返回重复项,而查询2不同,并且如果将两者结合,则将删除重叠的任何查询1和查询2,但查询1中的重复项将保留。纠正我,如果我错了。我认为这就是UNION DISTINCT vs UNION的原因 – Churk 2012-02-27 16:37:01

+0

@Churk你有没有试过?正如我所描述的,“UNION”和“UNION DISTINCT”没有区别。只有当你不想删除重复时,你需要使用'UNION ALL',但@aTei明确要求唯一的ID。看看这里:http://dev.mysql.com/doc/refman/5.0/en/union.html – GolezTrol 2012-02-27 16:40:03

+0

我想我错了,谢谢参考。 – Churk 2012-02-27 16:43:18

相关问题