2010-07-01 118 views
2

所以我昨天问了一个类似的问题,得到了很好的回应 - 我希望这次有同样的运气。我试图创建的是MySQL查询的分页结果。我正在利用LIMIT。这是我的查询。需要正确的SQL查询帮助

SELECT 
    BookingInfo.ClinicID, BookingInfo.BookingDate, BookingInfo.BookingTime, 
    BookingInfo.Status, PatientBooking.FirstName, PatientBooking.LastName, 
    PatientBooking.DateOfBirth 
FROM BookingInfo 
    LEFT JOIN PatientBooking 
    ON BookingInfo.PatientID = PatientBooking.PatientID 
WHERE PatientBooking.FirstName = 'Brian' 
    AND PatientBooking.LastName = 'Lang' 
    AND (BookingInfo.ClinicID = '1' OR BookingInfo.ClinicID = '2') 
LIMIT '0, 20' 
ORDER BY BookingInfo.BookingDate DESC 

此查询不起作用(但是,如果我删除了限制'0,20'部分它工作得很好)。相反,我得到这个错误返回:#1064 - 你的SQL语法错误;检查与您的MySQL服务器版本相对应的手册,以便在第1行的'0,20'ORDER BY BookingInfo.BookingDate DESC'处使用正确的语法。

专家的任何想法?

回答

2

我认为,限制应该来的订单。但是什么不行?

4

您的LIMIT子句不应加引号引起来。它应该只读LIMIT 0, 20。引号通常保留给字符串。

另外,LIMIT子句必须出现在ORDER BY子句之后。有关详细信息,请参阅SheepSimulator的答案。

Ref

+0

感谢您的提示,这对我来说是一种学习体验。不幸的是,即使在调整了我的查询之后,我仍然遇到了同样的错误。有任何想法吗? – 2010-07-01 23:00:53

+0

ClinicID是一个数字吗?或者它真的是一个字符? – Nitrodist 2010-07-01 23:12:10

1
  1. LIMIT子句应位于ORDER BY子句之后。
  2. 它的格式是LIMIT 0, 20而不是LIMIT '0, 20'

参考:MySQL SELECT syntax