我有两个表,其中包含以下列:DOCCHECK(skill,usernum,checknum)SKILL(skill,checknum)
我得到usernum和skill的输入If(input_usernum = DOCCHECK.usernum and DOCCHECK.skill=inputskill),然后我返回DOCCHECK.checknum,否则我返回SKILL.checknum,其中SKILL.skill
示例:
DOCCHECK
+-------+----------+-----------+
| skill | usernum | checknum |
+-------+----------+-----------+
| 1 | 111 | 30 |
| 2 | 222 | 99 |
| 3 | 111 | 4 |
+-------+----------+-----------+
技能
+-------+-----------+
| skill | checknum |
+-------+-----------+
| 1 | 4 |
| 2 | 30 |
| 3 | 50 |
| 4 | 2 |
+-------+-----------+
预期结果
input user: 333, 3 - should return checknum - 50
input user: 222,2 - should return - 99
input user: 222,3 - should return 50
谢谢你
1条答案
按热度按时间rqdpfwrv1#
任何时候,如果您需要从表中获取某些内容(在您的示例中,只有
doccheck
存在时),您至少应该考虑外部连接。那么
该查询将首先查找与用户输入匹配的
skill
行,然后查找与用户输入匹配的doccheck
行 *(如果存在)。如果它不存在,则为doccheck
返回的所有列值都将是null
。然后,我们使用coalesce
返回doccheck.checknum
值(如果找到),否则返回skill.checknum
值。注意,在我的示例中,
:input_usernum
和:input_skill
是表示用户输入的绑定变量。它们也可以是`PL/SQL变量:或者它们可以是字面量(尽管这对于其他不相关的原因来说是不好的):