2

重複の可能性:
1052: フィールド リストの列 'id' があいまいです

私は2つのテーブルを持っており、テーブルを接続したいsb_id( sb_id2つのテーブルでも同じです)。したがって、クエリを次のように使用しました。

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

そして、エラーが表示されました:

1052 : where 句の 'id' があいまいです

もう1つは、「JOIN」を使用して、1つの結果だけを表示したいということです。

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;

を持つレコードが 1 つだけで、一致する を持つstudent_info.id=1レコードが 1 つある限り、必要に応じて 1 つの結果が返されます。結果は、使用した場合と同じです。つまり、両方のレコードが存在し、結合されている必要があります。student_classsb_idINNER 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=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

于 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 に答える