2017-05-12 97 views
0

everyone ..我在SQL Server中有一个需要移植到MySQL的视图。使用子查询别名将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),但仍然没有成功,原因是使用它自己的表“一”的别名子查询这个查询转换。有没有什么办法来转换这个查询?

+0

请问您可以在sqlfiddle.com中提供查询与您的模式? –

+0

“仍不成功”究竟意味着什么?你有错误信息吗?如果是这样的话? –

回答

1

子查询中缺少限定符。 (这不应该是一个问题,因为内部/本地表应该优先于主/外部表)。除此之外,我没有看到任何问题。交换顶部的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; 
+0

谢谢你的答案..这个查询真的帮助我.. –