Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.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,这段代码有什么问题?它显示的表不存在错误1146我将您的语法改为: SELECT * FROM ( SELECT emplname, length(emplname) AS m FROM employeesinfo ) as k where m = (select max(m) from k); 另一种通用方法是使用秩分析函数: SELECT emplname, LENGTH(emplname) AS name_length FROM employeesinfo WHERE L

这段代码有什么问题?它显示的表不存在错误1146

我将您的语法改为:

SELECT *
FROM
(
    SELECT emplname, length(emplname) AS m
    FROM employeesinfo
) as k
where m = (select max(m) from k);
另一种通用方法是使用秩分析函数:

SELECT emplname, LENGTH(emplname) AS name_length
FROM employeesinfo
WHERE LENGTH(emplname) = (SELECT MAX(LENGTH(emplname)) FROM employeesinfo);
如果您只希望有一条记录具有最大长度,那么在MySQL上,我们可以使用LIMIT:


我将您的语法改为:

SELECT *
FROM
(
    SELECT emplname, length(emplname) AS m
    FROM employeesinfo
) as k
where m = (select max(m) from k);
另一种通用方法是使用秩分析函数:

SELECT emplname, LENGTH(emplname) AS name_length
FROM employeesinfo
WHERE LENGTH(emplname) = (SELECT MAX(LENGTH(emplname)) FROM employeesinfo);
如果您只希望有一条记录具有最大长度,那么在MySQL上,我们可以使用LIMIT:

表k未引用此查询中的派生表:

SELECT emplname, LENGTH(emplname) AS name_length
FROM employeesinfo
ORDER BY LENGTH(emplname) DESC
LIMIT 1;
您可能会混淆子查询和CTE。如果将其定义为CTE,则它将起作用:

SELECT k.*
FROM ( SELECT emplname, length(emplname) as m FROM employeesinfo
     ) k 
WHERE m = (SELECT max(m) FROM k);
我应该注意到,可能有更好的方法来处理这个问题。例如,如果预期只有一个最大值,则可以使用:

WITH k as (
      SELECT emplname, length(emplname) as m
      FROM employeesinfo
     )
SELECT k.*
FROM k
WHERE m = (SELECT MAX(m) FROM k);
表k未引用此查询中的派生表:

SELECT emplname, LENGTH(emplname) AS name_length
FROM employeesinfo
ORDER BY LENGTH(emplname) DESC
LIMIT 1;
您可能会混淆子查询和CTE。如果将其定义为CTE,则它将起作用:

SELECT k.*
FROM ( SELECT emplname, length(emplname) as m FROM employeesinfo
     ) k 
WHERE m = (SELECT max(m) FROM k);
我应该注意到,可能有更好的方法来处理这个问题。例如,如果预期只有一个最大值,则可以使用:

WITH k as (
      SELECT emplname, length(emplname) as m
      FROM employeesinfo
     )
SELECT k.*
FROM k
WHERE m = (SELECT MAX(m) FROM k);

我删除了不一致的数据库标记。仅使用您正在使用的数据库标记。我删除了不一致的数据库标记。仅使用您正在使用的数据库进行标记。从sELECT emplname中选择*,从employeesinfo中选择m,其中m=6,但它正在执行为什么。。。??u告诉correct我不了解ctesELECT*FROM SELECT employee name,lengthemplname作为m FROM employees作为k,其中m=6,但它正在执行为什么。。。??u告诉correct我不了解ctesELECT*FROM SELECT employee name,lengthemplname作为m FROM employees作为k,其中m=6,但它正在执行为什么。。。??u告诉correct我不了解ctesELECT*FROM SELECT employee name,lengthemplname作为m FROM employees作为k,其中m=6,但它正在执行为什么。。。??你说对了,我不懂cte