Mysql Update + SELECT查询

时间:2010-01-08 13:30:48

标签: mysql select combinations

我想为那些得分超过80的考试人员更新数据表。我试试这个

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

它给了我0结果。但它应该有几百个结果ANy帮助??

我认为问题是:

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

结果为0。如何选择考试1和2分的分数超过80分的人

3 个答案:

答案 0 :(得分:7)

您的查询无效,因为您要求ID = 1 AND 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

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

试试这个:

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

由于您无法同时拥有id ='1'id = '2',因此您的案例中返回的值数量为0