[英]Is it ok to use temporary tables in sql interview? [closed]
在进行SQL的在线/地面编码采访时,可以使用临时表吗? 像这样说,做成临时表的子查询很容易建立在前面的问题中可能会问到的其他查询上:
use employees;
set @from_date = "1999-01-01";
set @to_date = "9999-01-01";
SELECT dept_name, max(salary)
FROM
(
SELECT d.dept_name, e.*, s.salary, s.from_date, s.to_date, de.from_date as defd, de.to_date as detd FROM employees e
INNER JOIN salaries s ON e.emp_no = s.emp_no AND s.to_date >= @to_date AND s.from_date >=@from_date
INNER JOIN dept_emp de ON e.emp_no = de.emp_no AND de.to_date >= @to_date AND de.from_date >=@from_date
INNER JOIN departments d ON de.dept_no = d.dept_no
) t
GROUP BY 1
ORDER BY 1
另外,什么时候应该使用临时表? 将其用于一次临时分析是一种好习惯吗?
谢谢!
在我的现实生活中(在现实生活中的生产工作中),如果一个联接要达到很多(超过6-8个表)或很多子查询,我将使用临时表。 但是在接受采访时,这似乎是软弱的迹象。 使用CTE和Windows函数(结束),没有人会抱怨
是的,使用临时表很好(您可以使用本地或会话临时表,而不是全局表)。 如果您正在使用的RDBMS系统支持CTE,那将是一个最佳选择,但并非像MySQL
一样都支持CTE。在这种情况下,最好的选择是使用临时表。
其他RDBMS系统(例如SQL Server
提供了更多选项,例如Table Type Variable
,可以以相同的方式使用
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.