自然加入mysql 5.6

Natural join mysql 5.6

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

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

提前致谢

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

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

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)
;