Mysql 如何使用多个主键连接三个表

Mysql 如何使用多个主键连接三个表,mysql,sql,Mysql,Sql,我有三张桌子如下 表a(id、名称)作为主键 表b(id、名称、国家)作为主键,c_id作为外键 表c(id)作为主键,另一列是type 我想从这些表中选择id、name、type,其中country='CA' 我的数据库是MySQL,我编写的SQL如下: select n.activity_date,n.advertiser_id,c.type as type from a JOIN b as n on (a.id=b.id,a.name=b.name) JOIN c

我有三张桌子如下

表a(id、名称)作为主键

表b(id、名称、国家)作为主键,c_id作为外键

表c(id)作为主键,另一列是type

我想从这些表中选择id、name、type,其中country='CA'

我的数据库是MySQL,我编写的SQL如下:

select n.activity_date,n.advertiser_id,c.type as type
from  a JOIN b as n
    on (a.id=b.id,a.name=b.name)
    JOIN c
    on n.c_id=c.id
where b.country='CA'
limit 10;
错误是

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'as n
on (a.activity_date=d.activity_date,a.advertiser_id=d.advertiser_id)
JOIN t' at line 2

对于多个条件联接,必须使用AND,而不是逗号

select n.activity_date,n.advertiser_id,c.type as type
from  a 
    JOIN b as n on a.id=n.id AND a.name=n.name
    JOIN c on n.c_id=c.id
where n.country='CA'
limit 10;

对于多个条件联接,必须使用AND,而不是逗号

select n.activity_date,n.advertiser_id,c.type as type
from  a 
    JOIN b as n on a.id=n.id AND a.name=n.name
    JOIN c on n.c_id=c.id
where n.country='CA'
limit 10;

对于多个条件联接,必须使用AND,而不是逗号

select n.activity_date,n.advertiser_id,c.type as type
from  a 
    JOIN b as n on a.id=n.id AND a.name=n.name
    JOIN c on n.c_id=c.id
where n.country='CA'
limit 10;

对于多个条件联接,必须使用AND,而不是逗号

select n.activity_date,n.advertiser_id,c.type as type
from  a 
    JOIN b as n on a.id=n.id AND a.name=n.name
    JOIN c on n.c_id=c.id
where n.country='CA'
limit 10;

您在上的
不正确。不能用
分隔子句。您必须使用布尔逻辑,这意味着
,例如:

from  a JOIN b as n
    on (a.id=b.id AND a.name=b.name)
                  ^^^^---- no commas here

您在
上的
不正确。不能用
分隔子句。您必须使用布尔逻辑,这意味着
,例如:

from  a JOIN b as n
    on (a.id=b.id AND a.name=b.name)
                  ^^^^---- no commas here

您在
上的
不正确。不能用
分隔子句。您必须使用布尔逻辑,这意味着
,例如:

from  a JOIN b as n
    on (a.id=b.id AND a.name=b.name)
                  ^^^^---- no commas here

您在
上的
不正确。不能用
分隔子句。您必须使用布尔逻辑,这意味着
,例如:

from  a JOIN b as n
    on (a.id=b.id AND a.name=b.name)
                  ^^^^---- no commas here
您的查询应该是

select n.activity_date,n.advertiser_id,c.type as type
from  a JOIN b as n
    -- because of the alias name you've got to reference table b as n
    -- and you've omitted the AND operator
    on (a.id=n.id AND a.name=n.name)  
    JOIN c
    on n.c_id=c.id
where n.country='CA'  -- you've got to use n instead of b
limit 10;
您的查询应该是

select n.activity_date,n.advertiser_id,c.type as type
from  a JOIN b as n
    -- because of the alias name you've got to reference table b as n
    -- and you've omitted the AND operator
    on (a.id=n.id AND a.name=n.name)  
    JOIN c
    on n.c_id=c.id
where n.country='CA'  -- you've got to use n instead of b
limit 10;
您的查询应该是

select n.activity_date,n.advertiser_id,c.type as type
from  a JOIN b as n
    -- because of the alias name you've got to reference table b as n
    -- and you've omitted the AND operator
    on (a.id=n.id AND a.name=n.name)  
    JOIN c
    on n.c_id=c.id
where n.country='CA'  -- you've got to use n instead of b
limit 10;
您的查询应该是

select n.activity_date,n.advertiser_id,c.type as type
from  a JOIN b as n
    -- because of the alias name you've got to reference table b as n
    -- and you've omitted the AND operator
    on (a.id=n.id AND a.name=n.name)  
    JOIN c
    on n.c_id=c.id
where n.country='CA'  -- you've got to use n instead of b
limit 10;


a.id=n.id,a.name=n.name
a.id=n.id和a.name=n.name
您已经在表b中添加了一个别名,因此您可以删除别名或更改
上的
字段的别名clause@1nflktd不起作用。错误是
错误1064(42000):您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解使用near'as n on(a.id=b.id和a.name=b.name)的正确语法。
@user3795071将
b
更改为
n
@1nflktd仍然存在相同的错误。
a.id=n.id,a、 name=n.name
a.id=n.id和a.name=n.name
您在表b中添加了一个别名,因此您可以删除别名或更改
上的
字段的别名clause@1nflktd不起作用。错误是
错误1064(42000):您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解使用near'as n on(a.id=b.id和a.name=b.name)的正确语法。
@user3795071将
b
更改为
n
@1nflktd仍然存在相同的错误。
a.id=n.id,a、 name=n.name
a.id=n.id和a.name=n.name
您在表b中添加了一个别名,因此您可以删除别名或更改
上的
字段的别名clause@1nflktd不起作用。错误是
错误1064(42000):您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解使用near'as n on(a.id=b.id和a.name=b.name)的正确语法。
@user3795071将
b
更改为
n
@1nflktd仍然存在相同的错误。
a.id=n.id,a、 name=n.name
a.id=n.id和a.name=n.name
您在表b中添加了一个别名,因此您可以删除别名或更改
上的
字段的别名clause@1nflktd不起作用。错误是
错误1064(42000):您的SQL语法有错误;查看与MySQL服务器版本对应的手册,了解使用near'as n on(a.id=b.id和a.name=b.name)的正确语法。
@user3795071将
b
更改为
n
@1nflktd仍然存在相同的错误。不要忘记别名n。不起作用。错误是
错误1064(42000):您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解使用near'as n on(a.id=b.id和a.name=b.name)
JO'的正确语法,在第2Don行不要忘记别名n。不起作用。错误是
错误1064(42000):您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解使用near'as n on(a.id=b.id和a.name=b.name)
JO'的正确语法,在第2Don行不要忘记别名n。不起作用。错误是
错误1064(42000):您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解使用near'as n on(a.id=b.id和a.name=b.name)
JO'的正确语法,在第2Don行不要忘记别名n。不起作用。错误是
错误1064(42000):您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解使用near'as n on(a.id=b.id和a.name=b.name)的正确语法第2行的
JO'不起作用。错误是
错误1064(42000):您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解使用near'as n on(a.id=b.id和a.name=b.name)的正确语法。
不起作用。错误是
错误1064(42000):您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解使用near'as n on(a.id=b.id和a.name=b.name)的正确语法。
不起作用。错误是
错误1064(42000):您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解使用near'as n on(a.id=b.id和a.name=b.name)的正确语法。
不起作用。错误是
错误1064(42000):您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,了解使用near'as n on(a.id=b.id和a.name=b.name)的正确语法。