使用子查询别名将SQL Server查询转换为MySQL查询

时间:2017-05-12 11:09:16

标签: mysql sql-server-2014

每个人..我在SQL Server中有一个需要移植到MySQL的视图。

SELECT Geb_ID, Geb_Key, Geb_Jahr, Geb_Parzelle, Geb_Standort, 
Geb_GebArtID, Geb_BesID, Geb_boolJB, Geb_Info,
(SELECT TOP (1) Geb_BesID FROM TGebaude AS xGeb 
WHERE Geb_Key = a.Geb_Key ORDER BY Geb_Jahr DESC) AS Akt_BesID
FROM TGebaude AS a

我尝试使用LIMIT 1转换此查询(因为在MySQL中没有TOP 1)但仍然没有成功,因为有子查询为其自己的表使用“a”别名。有没有办法转换这个查询?

1 个答案:

答案 0 :(得分:1)

子查询中缺少限定符。 (并且这不应该是一个问题,因为内部/本地表应该优先于主/外部表。)除此之外我没有看到任何问题。交换TOP为LIMIT,你应该完成。请尝试添加限定符:

SELECT 
  Geb_ID, Geb_Key, Geb_Jahr, Geb_Parzelle, Geb_Standort, 
  Geb_GebArtID, Geb_BesID, Geb_boolJB, Geb_Info,
  (
    SELECT Geb_BesID 
    FROM TGebaude AS xGeb 
    WHERE xGeb.Geb_Key = a.Geb_Key 
    ORDER BY xGeb.Geb_Jahr DESC
    LIMIT 1
  ) AS Akt_BesID
FROM TGebaude AS a;