我想为那些得分超过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分的人
答案 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
。