我正在尝试将我的应用程序从MS SQL Server移动到MySQL,并且我正面临子查询中MySQL“限制”的问题

时间:2013-10-06 10:29:29

标签: mysql sql sql-server

我正在尝试将我的应用程序从MS SQL Server移动到MySQL,并且我在子查询中面临MySQL的LIMIT子句的问题。

SQL Server代码:

select F.call_Id, F.cell_Phone_Number, F.cal_DATE
From TD_Call_Log AS F
Where F.call_Id IN ( Select Top 5 S.call_Id
                      From TD_Call_Log AS S
                      where S.cell_Phone_Number = F.cell_Phone_Number)

 Order by cell_Phone_Number

我尝试过的MySQL代码:

select F.call_Id, F.cell_Phone_Number, F.cal_DATE
From TD_Call_Log F
Where F.call_Id IN (Select S.call_Id
                      From TD_Call_Log S
                      where S.cell_Phone_Number = F.cell_Phone_Number Limit 5)

 Order by cell_Phone_Number

我也尝试过:

select F.call_Id, F.cell_Phone_Number, F.cal_DATE
From TD_Call_Log F INNER JOIN (Select S.call_Id
                      From TD_Call_Log S 
 where S.cell_Phone_Number = F.cell_Phone_Number Limit 5) as t
                      ON F.call_Id = t.call_Id

 Order by cell_Phone_Number

1 个答案:

答案 0 :(得分:0)

尝试使用内部联接替换In子句中的子查询。

select F.call_Id, F.cell_Phone_Number, F.cal_DATE
From TD_Call_Log AS F 
INNER JOIN 
(
Select S.call_Id, S.cell_Phone_Number
From TD_Call_Log S
Limit 5
)
sub
where sub.cell_Phone_Number = F.cell_Phone_Number and F.call_Id = sub.call_Id
Order by cell_Phone_Number