以下查询的逆运算是什么
SELECT * FROM `test_result`
INNER JOIN `perinfo` ON `test_result`.`mobileno` = `perinfo`.`mobileno`
WHERE `perinfo`.`insti_id` = '2'
AND `test_id` = (SELECT `test_id`
FROM `test`
WHERE `test_name` = 'One')
我想从insti_id为2的数据库表“ perinfo”中选择行,并且它们也存在于数据表“ test_result”中
答案 0 :(得分:0)
尝试一下:
SELECT * FROM `test_result` `t`
INNER JOIN `perinfo` ON `test_result`.`mobileno` = `perinfo`.`mobileno`
WHERE `perinfo`.`insti_id` = '2'
AND NOT EXISTS(SELECT 1 FROM `test`
WHERE `test_name` = 'One'
AND `test_id` = `t`.`test_id`)
答案 1 :(得分:0)
您可以使用!=
(不相等)条件而不是=
(相等)来更改过滤条件
SELECT * FROM `test_result`
INNER JOIN `perinfo` ON `test_result`.`mobileno` = `perinfo`.`mobileno`
WHERE `perinfo`.`insti_id` != '2'
AND `test_id` != (SELECT `test_id`
FROM `test`
WHERE `test_name` = 'One')
但是如果子查询的结果更多,则应该为IN或NOT IN
SELECT * FROM `test_result`
INNER JOIN `perinfo` ON `test_result`.`mobileno` = `perinfo`.`mobileno`
WHERE `perinfo`.`insti_id` != '2'
AND `test_id` NOT IN (SELECT `test_id`
FROM `test`
WHERE `test_name` = 'One')
答案 2 :(得分:0)
我不理解您所说的“查询逆”是什么意思,但是要获得您要使用的问题文本中描述的结果
SELECT *
FROM `perinfo`
INNER JOIN `test_result`
ON `test_result`.`mobileno` = `perinfo`.`mobileno`
WHERE `perinfo`.`insti_id` = '2'
换句话说,只需反转查询中perinfo
和test_result
的位置,并删除test
上的子选择,因为未将其指定为期望结果的一部分。