2

可能重复:
1052:字段列表中的列“id”不明确

我有两个表,我想通过sb_idsb_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”来显示一个结果。

4

10 回答 10

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
于 2011-07-13T15:35:12.080 回答
1

问题在于您的WHERE陈述,您需要使用:

where student_info.id=1

或者:

where student_class.id=1
于 2011-07-13T15:35:19.583 回答
0
SELECT Name,class 
FROM student_info,student_class 
WHERE student_info.sb_id=1 AND student_info.sb_id=student_class.sb_id;
于 2011-07-13T15:33:56.600 回答
0

SELECT a.Name,a.class from student_info as a join student_class as b on a.sb_id = b.sb_id where id=1;

于 2011-07-13T15:34:26.723 回答
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

于 2011-07-13T15:34:47.833 回答
0
SELECT Name,class from student_info join student_class on student_info.sb_id=student_class.sb_id where student_info.id=1;
于 2011-07-13T15:35:37.083 回答
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;
于 2011-07-13T15:36:11.777 回答
0

这意味着两个表中都存在 id 列,只需将 id 替换为预期的 student_info.id 或 student_class.id

于 2011-07-13T15:36:13.167 回答
0

在 where 子句中的 ID 列前加上表名。它很困惑,因为 ID 在两个表中,它不知道你指的是哪一个。

WHERE student_info.id=1

或者

WHERE student_class.id=1

取决于您在编写查询时的意思。

于 2011-07-13T15:37:17.723 回答
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
于 2011-07-13T15:37:45.670 回答