2016-08-03 52 views
-2

尝试创建一个查询以获取与用户相关的最新记录。这是我尝试编写一个查询,返回与特定用户相关的最新行

"SELECT * 
FROM (
    SELECT * 
    FROM mytable 
    ORDER BY id 
    DESC LIMIT 1) 
WHERE userid = $userID"; 
+3

跳过子查询。 – jarlh

+0

使用此查询,您将获得所有用户的最后一条记录,然后是您想要的用户过滤这一条记录,这是错误。 –

+0

你的尝试有什么问题?添加你得到的错误。这将与您在派生表上缺少的表别名有关。像@jarlh说你并不需要使用派生表 – ughai

回答

2

你还可以:

Select * from table 
Where id = 
    (Select Max(Id) from table 
    where userid = $userID) 
0

使用top(1)

Select TOP(1) * FROM table ORDER BY id DESC 
+2

'TOP'是用于SQL Server的。 MySQL有'LIMIT'。 (ANSI SQL有'FETCH FIRST'。) – jarlh

+0

没错,我读过的标题显示sql无论如何你是对的 –

0

尝试:

SELECT * 
    FROM mytable 
    WHERE userid = $userID 
    ORDER BY id DESC 
    LIMIT 1 
1

简单地跳过子查询:

SELECT * 
FROM mytable 
WHERE userid = $userID 
ORDER BY id DESC 
LIMIT 1 
相关问题