MySQL的更新+ SELECT查询
-
19-09-2019 - |
题
我要更新数据表对于那些谁得分考试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
。
不隶属于 StackOverflow