2011-07-13 43 views
2

Possible Duplicate:
1052: Column 'id' in field list is ambiguous如何解决MySQL中模糊的列名错误?

我有两个表,我想通过sb_id的表连接(sb_id是相同的两个表)。所以,我用我的查询是这样的:

SELECT Name, 
     class 
    FROM student_info, 
     student_class 
WHERE id = 1 
    AND student_info.sb_id = student_class.sb_id; 

而且它显示错误:

1052: 'id' in where clause is ambiguous

另一件事,我想用“加盟”只显示一个结果。

回答

0
SELECT Name,class 
FROM student_info,student_class 
WHERE student_info.sb_id=1 AND student_info.sb_id=student_class.sb_id; 
0

SELECT a.Name,从student_info的A.class作为加入student_class为b 上a.sb_id = b.sb_id 其中id = 1;

+0

无需别名表,只需指定where子句... – DGM

0

如果你的where id=1where student_info.sb_id = 1

你可以将其更改为加入这样的:

SELECT Name,class FROM student_info INNER JOIN student_class ON student_info.sb_id = student_class.sb_id WHERE student_info.sb_id=1

8

这意味着,两个表具有id,你需要它出现在(如果是在同一个与表前缀它两者都可以)。

SELECT 
    name, 
    class 
FROM student_info, student_class 
WHERE 
    student_info.id=1 
    AND student_info.sb_id=student_class.sb_id; 

这将返回一个结果,你的愿望,只要有一个记录与student_info.id=1student_class记录与匹配sb_id。结果与您使用INNER JOIN —相同,换句话说,两个记录必须存在并且连接在一起。

相应INNER JOIN语法是这样的:

SELECT 
    name, 
    class, 
FROM student_info 
INNER JOIN student_class ON student_info.sb_id = student_class.sb_id 
WHERE student_info.id = 1 
+0

Thanks.It工作:-) – Adn

+0

表中的两者都是内部连接 ​​- 首先是ANSI- 89语法,后面是ANSI-92。这两个查询应该使用表别名,除非你喜欢重新输入每个参考的全表名... –

+0

@OMG谢谢你的细节/提示。 – Nicole

1

问题是与你的WHERE statment,你需要使用:

where student_info.id=1 

或:

where student_class.id=1 
0
SELECT Name,class from student_info join student_class on student_info.sb_id=student_class.sb_id where student_info.id=1; 
0
SELECT student_info.Name,student_info.class from student_info inner join student_class on student_info.sb_id=student_class.sb_id where student_info.id=1; 
0

这意味着id列存在两个表中,只是与以往旨在

0

前缀ID列与表名的where子句中student_info.id或student_class.id更换ID。它很混乱,因为ID在两个表中,并且它不知道你的意思。

WHERE student_info.id=1 

WHERE student_class.id=1 

具体取决于你的意思是,当你写的查询。

0

这是因为您的两个表都有id字段,因此您需要指定要使用哪个id(您可能会也可能不会使用表别名,我更喜欢使用,但这取决于您)。另外,将JOIN用于连接表格比将所有内容放入FROM好得多。我想你的查询重写

SELECT Name,class 
from student_info si 
INNER JOIN student_class sc ON (sc.sb_id = si.sb_id) 
WHERE si.id = 1 // or sc.id =1, whatever makes sense