如何在mysql中将两个大表连接成一个

时间:2012-04-22 07:56:48

标签: mysql sql join

我有桌子人

    Name  Id            Age Sex  Country    
    Ankit ankitgautam24 17   M   India
    John  john321       71   M   France
    Will  willsmith     42   M   USA
    Arti  artisingh     67   F   Pakistan
   .....3.5 million records......

另一个表格限制

Country        Sex      Allow
France         F       Allowed
France         M       Restricted
India          F       Restricted
India          M       Allowed
Pakistan       F       Restricted
....for each country ......

现在我想将其转换为表格Useraccount,其结构应为

    Name  Id            Age Sex  Country  Allow   
    Ankit ankitgautam24 17   M   India    Allowed
    John  john321       71   M   France   Restricted 
    Will  willsmith     42   M   USA      Allowed
    Arti  artisingh     67   F   Pakistan Allowed
   .....hundreds of thousands of record......

以最聪明的方式将这两个表连接到一个的正确查询是什么

2 个答案:

答案 0 :(得分:3)

您需要的只是一个简单明了的JOIN,而且不会花费太多时间:

SELECT p.Name, p.Id, p.Age, p.Sex, p.Country,
       r.Allow 
FROM People p 
INNER JOIN Restriction r ON p.Country = r.Country

JOIN这将是更有效的方法,但要提高效率,而不是加入Country名称上的两个表格,最好添加CountryID并将其加入此列。因此,您的表People应如下所示:

  • Name
  • Id
  • Age
  • CountryId约束外键引用Restrictions表(CountryId)。

Restrictions表:

  • CountryID
  • IsAllwoed

答案 1 :(得分:0)

你也可以试试这个:

SELECT p.Name, 
       p.Id, 
       p.Age, 
       p.Sex, 
       p.Country, 
       r.Allow, 
       r.Country 
from people p, Restriction r 
where r.Country=p.Country