我有两个表,我希望通过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:where子句中的'id'含糊不清
另一件事,我想通过使用“JOIN”来显示一个结果。
答案 0 :(得分: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=1
且student_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
答案 1 :(得分:1)
问题在于您的WHERE
声明,您需要使用:
where student_info.id=1
或:
where student_class.id=1
答案 2 :(得分:0)
SELECT Name,class
FROM student_info,student_class
WHERE student_info.sb_id=1 AND student_info.sb_id=student_class.sb_id;
答案 3 :(得分:0)
从student_info中选择a.Name,a.class作为b的连接student_class 在a.sb_id = b.sb_id上 其中id = 1;
答案 4 :(得分:0)
您的where id=1
应该where 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
答案 5 :(得分:0)
SELECT Name,class from student_info join student_class on student_info.sb_id=student_class.sb_id where student_info.id=1;
答案 6 :(得分: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;
答案 7 :(得分:0)
这意味着两列中都存在id列,只需将student_info.id或student_class.id替换为id
答案 8 :(得分:0)
使用表名在where子句中添加ID列。它很混乱,因为ID在两个表中,并且它不知道你的意思。
WHERE student_info.id=1
或
WHERE student_class.id=1
取决于您在编写查询时的意思。
答案 9 :(得分: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