2

我有一桌人

    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......

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

4

2 回答 2

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.
于 2012-04-22T08:00:40.543 回答
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
于 2016-10-20T17:32:40.777 回答