Php 如何将其转换为mysql查询
如何将以下内容转换为?我尝试在MySQL编辑器中运行它,但看起来MySQL中的语法不同Php 如何将其转换为mysql查询,php,mysql,database,Php,Mysql,Database,如何将以下内容转换为?我尝试在MySQL编辑器中运行它,但看起来MySQL中的语法不同 -- Working Example ;WITH CTECompany AS ( SELECT EmpID, ParentID, PersonName , 0 AS HLevel, CAST(RIGHT(REPLICATE('_',5) + CONVERT(VARCHAR(20),EmpID),20) AS VA
-- Working Example
;WITH CTECompany
AS
(
SELECT
EmpID,
ParentID,
PersonName ,
0 AS HLevel,
CAST(RIGHT(REPLICATE('_',5) + CONVERT(VARCHAR(20),EmpID),20) AS VARCHAR(MAX)) AS OrderByField
FROM @Company
WHERE ParentID IS NULL
UNION ALL
SELECT
C.EmpID,
C.ParentID,
C.PersonName ,
(CTE.HLevel + 1) AS HLevel,
CTE.OrderByField + CAST(RIGHT(REPLICATE('_',5) + CONVERT(VARCHAR(20),C.EmpID),20) AS VARCHAR(MAX)) AS OrderByField
FROM @Company C
INNER JOIN CTECompany CTE ON CTE.EmpID = C.ParentID
WHERE C.ParentID IS NOT NULL
)
-- Working Example
SELECT
EmpID
, ParentID
, HLevel
, PersonName
, (REPLICATE( '----' , HLevel ) + PersonName) AS Person
FROM CTECompany
ORDER BY OrderByField,PersonName;
MySQL没有带的
。只需将该查询移动到子查询中,替换查询第二部分中的CTECompany
SELECT
EmpID
, ParentID
, HLevel
, PersonName
, (REPLICATE( '----' , HLevel ) + PersonName) AS Person
FROM (
SELECT
EmpID,
ParentID,
PersonName ,
0 AS HLevel,
CAST(RIGHT(REPLICATE('_',5) + CONVERT(VARCHAR(20),EmpID),20) AS VARCHAR(MAX)) AS OrderByField
FROM Company
WHERE ParentID IS NULL
UNION ALL
SELECT
C.EmpID,
C.ParentID,
C.PersonName ,
(CTE.HLevel + 1) AS HLevel,
CTE.OrderByField + CAST(RIGHT(REPLICATE('_',5) + CONVERT(VARCHAR(20),C.EmpID),20) AS VARCHAR(MAX)) AS OrderByField
FROM Company C
INNER JOIN CTECompany CTE ON CTE.EmpID = C.ParentID
WHERE C.ParentID IS NOT NULL
)
ORDER BY OrderByField,PersonName;
MySQL也不允许将变量用作表名,所以我将@Company
更改为Company
,这就是SQL Server语法。好吧。。。有什么好说的。您可以使用MySQL函数重写特定于SQL Server的函数(如果可能),并更改语法。这里的问题是什么?请强调您遇到的具体问题。因此,这不是一个代码编写/翻译服务。它专门用于帮助开发人员解决特定问题。