2

試験 ID 1,2 で 80 点以上を獲得した人のデータ テーブルを更新したい。

UPDATE data
SET column = 'value'
WHERE
(SELECT * FROM exams
WHERE (id = '1' AND score >= 80) AND (id = '2' AND score >= 80));

それは私に0の結果を与えます。しかし、数百の結果が得られるはずです。

問題はこれだと思います:

SELECT * FROM exams
WHERE (id = '1' AND score >= 80) AND (id = '2' AND score >= 80)

結果は 0 です。1次試験2次試験ともに80点以上の者の選抜方法は??

4

3 に答える 3

7

id=1かつid=2の試験を要求しているため、クエリは機能しません。

idが同時に2つの値を保持できないと仮定すると、結果が返されることはありません。

代わりに、これを更新の基礎として試してください:-

SELECT * FROM exams
WHERE score >= 80 AND id IN ( '1','2' )

コメントに基づいて編集:-

ユーザーは、両方の試験で80点以上を獲得した人だけを望んでいます。個人IDが試験を受けた人の鍵であると仮定します。

SELECT e1.personid FROM
(
   SELECT personid FROM exams  WHERE score >= 80 AND id = '1' 
) e1
INNER JOIN
(
   SELECT personid FROM exams  WHERE score >= 80 AND id = '2' 
) e2
ON
  e1.personid = e2.personid
于 2010-01-08T13:37:44.347 に答える
2

selectステートメントはORを使用する必要があると思います。

SELECT * FROM exams
WHERE (id = '1' AND score >= 80) OR (id = '2' AND score >= 80)
于 2010-01-08T13:38:18.260 に答える
0

これを試して:

SELECT * FROM exams
WHERE (id = '1' OR id = '2') AND score >=80

id ='1'あなたのケースで返される値の数をid = '2'同時に持つことはできないためです0

于 2010-01-08T13:42:15.843 に答える