MySQL:这可能吗?

时间:2011-08-25 19:52:37

标签: mysql join

我正在努力完成某些事情,但我有点像菜鸟,并且不知道这是否可以在一个查询中完成。

我有两个看起来像这样的表:

表1:

link_id    target_country
-------------------------
1          5
2          3

表2:

id_country   country
-------------------------
5            Belgium
5            Russia
2            USA

因此,根据上述数据, link_id 1 target_country为5 ,这意味着此链接属于比利时俄罗斯 id_country 5 表2 与这些国家/地区相关联)

我的想法是,在将几个 link_ids 传递给mysql查询后,我可以获得类似的内容:

  • 比利时=> 1(因为比利时链接 link_id为1
  • 俄罗斯=> 1(此 link_id 1 也属于俄罗斯)
  • USA => 2

如何使用一个查询并且只传递 link_ids ?谢谢!

4 个答案:

答案 0 :(得分:2)

SELECT link_id, country
FROM table1 links
    INNER JOIN table2 countries ON links.target_country = countries.id_country

答案 1 :(得分:1)

SELECT country, link_id
FROM table_2
INNER JOIN table_1
ON table_2.id_country = table_1.target_country
WHERE table_1.link_id IN (1, 2);

这是标准JOIN

答案 2 :(得分:1)

SELECT 
    table2.country 
FROM 
    table1, 
    table2 
WHERE
    table2.country_id = table1.target_country AND
    table1.target_country = 5;

确保你确实在table2上有一个主索引 - 如果country_id不是唯一的,则country_id不能是主索引!

答案 3 :(得分:1)

SELECT t2.country, t1.link_id 
FROM table_1 t1, table_2 t2 
WHERE t1.target_country = t2.id_country