WHERE子句SQL问题:查询作者Mark Yee撰写论文的PANUM
解决方法
你需要通过关联三张表来实现这个需求,推荐使用显式JOIN替代旧的逗号连接表的方式,这样代码可读性更强,还能避免意外的笛卡尔积问题。
完整的SQL查询如下:
SELECT a.panum FROM AUTHOR a JOIN ACADEMIC ac ON a.acnum = ac.acnum WHERE ac.givenname = 'Mark' AND ac.famname = 'Yee';
逻辑说明:
- 先通过
ACADEMIC表筛选出姓名为Mark Yee对应的作者编号ACNUM - 再通过
ACNUM这个关联字段,把AUTHOR表和ACADEMIC表连接起来,从而获取该作者所有的论文编号PANUM
如果暂时习惯用原来的逗号连接方式(不推荐,但也能正常运行),对应的写法是:
SELECT panum FROM AUTHOR, ACADEMIC WHERE AUTHOR.acnum = ACADEMIC.acnum AND ACADEMIC.givenname = 'Mark' AND ACADEMIC.famname = 'Yee';
不过还是更建议用显式JOIN,这是现代SQL的标准写法,后续维护起来会更省心~
内容的提问来源于stack exchange,提问作者user8420047
相关产品推荐
相关产品推荐

