Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何调试此SQL查询?_Sql - Fatal编程技术网

如何调试此SQL查询?

如何调试此SQL查询?,sql,Sql,我运行了这段代码,但它不起作用(我希望得到一个结果集,但没有得到): 但是如果我运行查询 select max(salary) from employees where hire_date between '2002-01-01' and '2003-12-31'; 及 它们运行良好最高(工资)来自第二个查询的值为24000.00 这是我尝试练习的网站(问题34) 使用子查询进行筛选时,请使用“IN”子句而不是“=” SELECT e.employee_id, e.first_n

我运行了这段代码,但它不起作用(我希望得到一个结果集,但没有得到):

但是如果我运行查询

select max(salary) from employees where hire_date between '2002-01-01' and '2003-12-31';

它们运行良好<代码>最高(工资)来自第二个查询的值为24000.00

这是我尝试练习的网站(问题34)

使用子查询进行筛选时,请使用“IN”子句而不是“=”

SELECT e.employee_id,
       e.first_name,
       e.last_name,
       e.salary,
       d.department_name,
       l.city
FROM   employees e
       JOIN departments d
         ON e.department_id = d.department_id
       JOIN locations l
         ON l.location_id = d.location_id
WHERE  e.salary IN (SELECT Max(salary)
                    FROM   employees
                    WHERE  hire_date BETWEEN '2002-01-01' AND '2003-12-31'); 

子查询缺少括号

SELECT e.employee_id,
       e.first_name,
       e.last_name,
       e.salary,
       d.department_name,
       l.city
FROM   employees e
       JOIN departments d
         ON e.department_id = d.department_id
       JOIN locations l
         ON l.location_id = d.location_id
WHERE  e.salary = (SELECT Max(salary)
                   FROM   employees
                   WHERE  hire_date BETWEEN '2002-01-01' AND '2003-12-31'); 

你说不工作是什么意思?我没有从查询中得到结果。我正在使用浏览器编写代码。这是一个侧面的网站注:根据SQL标准,此:
'2002-01-01'
是字符串文字,而此:
date'2002-01-01'
是日期文字。因此,在日期字符串前面加上单词
date
,以避免字符串/日期转换和可能出现的复杂情况(尽管不太可能有任何复杂情况)。
Max
without
groupby
将返回一条记录。所以
=
应该可以工作。
SELECT e.employee_id,
       e.first_name,
       e.last_name,
       e.salary,
       d.department_name,
       l.city
FROM   employees e
       JOIN departments d
         ON e.department_id = d.department_id
       JOIN locations l
         ON l.location_id = d.location_id
WHERE  e.salary IN (SELECT Max(salary)
                    FROM   employees
                    WHERE  hire_date BETWEEN '2002-01-01' AND '2003-12-31'); 
SELECT e.employee_id,
       e.first_name,
       e.last_name,
       e.salary,
       d.department_name,
       l.city
FROM   employees e
       JOIN departments d
         ON e.department_id = d.department_id
       JOIN locations l
         ON l.location_id = d.location_id
WHERE  e.salary = (SELECT Max(salary)
                   FROM   employees
                   WHERE  hire_date BETWEEN '2002-01-01' AND '2003-12-31');