我要更新数据表对于那些谁得分考试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的结果。如何选择那些谁得分超过80分两个考试1和2π

有帮助吗?

解决方案

您查询不会工作,因为你要求的检查有ID = 1 ID = 2。

假设ID不能在同一时间举行的两个值,你永远也不会返回任何结果。

试试这个为你更新的基础上,而不是: -

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

<强>基于注释编辑: -

用户只需要对谁的两个考试得分超过80人。假设的 PERSONID 的是一键谁参加考试的人。

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

其他提示

我相信你的SELECT语句应使用OR:

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

尝试这种情况:

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

由于你不能有id ='1'id = '2'同时在你的情况下返回值的数量是0

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top