-4

我想看看一个国家赢得了多少奖牌。所以我决定合并表 www_result 和 www_country。它们具有共同的 country_id 属性。到目前为止,这是我的代码,但出现语法错误,我似乎找不到原因。

SELECT * FROM www_results WHERE position = 1 OR position = 2 OR position = 3
NATURAL JOIN 
www_countries;

先感谢您

4

1 回答 1

1

您只是顺序错误,执行 JOIN,然后应用 WHERE 子句...

您还应该在引用字段名称时指定要引用的表。它并不总是必要的,但使它更具可读性并且不易出现错误。

SELECT
    *
FROM
    www_results
NATURAL JOIN 
    www_countries
WHERE
    www_results.position IN (1, 2, 3)
;

我实际上也反对NATURAL JOIN任何方式。如果你偶然有同名的字段,你会得到不需要的行为。我会使用显式INNER JOINs。

SELECT
    *
FROM
    www_results
INNER JOIN 
    www_countries
        ON  www_results.country_id = www_countries.country_id
        --  Replace the "country_id" with whatever field you want to join on
WHERE
    www_results.position IN (1, 2, 3)
;
于 2017-10-10T14:44:33.907 回答