如何在 WHERE 子句中使用主键连接表? [关闭]

Posted

技术标签:

【中文标题】如何在 WHERE 子句中使用主键连接表? [关闭]【英文标题】:How to join tables using a primary key in the WHERE clause? [closed] 【发布时间】:2017-09-08 03:43:27 【问题描述】:

有两个表,emp 和 dept。并且两个表都将 deptno 作为主键。我想用 ename 显示 10 到 20 之间的 deptno 的详细信息。

例如:loc 在 dept 表中:带有 sal 列:

select ename,sal,loc,deptno from emp,dept
where sal between 1000 and 2000 and emp.deptno=dept.deptno; 

在这个查询中,我想用 deptno 替换 sal 但给出错误。

【问题讨论】:

请在您的问题中编辑您遇到的错误。 作为参考,这个问题被严重否决了,因为:(a)在提问之前没有付出足够的努力; (b) 帖子中包含txtspk——读者往往会认为“are”等字写起来不应该太麻烦; (c) 帖子的第一个版本似乎要求读者做这项工作,(d) 问题仍然不清楚(它提到了一个错误但没有提到 what 错误),( e) 标题没有包含任何细节,只是淫秽的乞讨。 对于你的下一个问题,首先确保你已经做出了坚实的努力,然后确保上述所有点都得到纠正。 请阅读Under what circumstances may I add “urgent” or other similar phrases to my question, in order to obtain faster answers? - 总结是这不是解决志愿者的理想方式,并且可能会适得其反。请不要将此添加到您的问题中。 【参考方案1】:

假设

表1是部门 表 2 是 emp dept 表有 deptno 作为主键和其他一些列 emp 表有 enamedeptno 列,其中 deptnodeptno 表的 deptno 列的外键

这是一个 SQL 查询,用于选择 deptno 在 10 到 20 之间的记录中的 deptnoename

SELECT 
    dept.deptno, emp.ename 
FROM 
    dept 
JOIN 
    emp ON dept.deptno = emp.deptno 
WHERE 
    dept.deptno BETWEEN 10 and 20;

【讨论】:

我必须加入两个表 再次显示定义不明确的列。感谢兄弟一次又一次地帮助我。现在请再次帮助我 SELECT d.deptno, e.ename FROM dept d JOIN emp e ON d.deptno = e.deptno WHERE d.deptno BETWEEN 10 and 20; 我已经通过在 SELECT 部分指定绝对列名来更新答案。请检查。

以上是关于如何在 WHERE 子句中使用主键连接表? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在 from 子句或 where 子句中进行 equi join 是不是更好

在codeigniter中我如何使用where子句进行连接

oracle 性能优化建议

Oracle查询性能优化

Oracle 查询性能优化(转)

怎样使数据库中的多表实现联合查询