2016-08-03 3 views
-2

ユーザーに関連する最新のレコードを取得するクエリを作成しようとしています。ここに私の試みはまた特定のユーザーに関連する最新の行を返すクエリを作成します。

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

サブクエリをスキップします。 – jarlh

+0

このクエリでは、すべてのユーザーの最後のレコードを取得し、次にこの1つのレコードを目的のユーザーでフィルタリングしています。これはエラーです。 –

+0

あなたの試行で何が間違っていますか?取得しているエラーを追加してください。派生テーブルに欠けているテーブルエイリアスに関連しています。 @jarlhのように、派生テーブルを使用する必要はありません。 – ughai

答えて

2

可能性があります:

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

使用トップ(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 
関連する問題