0

データの古いデータを表示するはずのSQLコードがありますが、問題はUNIXタイムスタンプの後のデータを表示することです。

これは私のSQLコードです:

SELECT p . * 
FROM posts p
LEFT JOIN following f ON f.follower_id =1
AND p.post_user_id = f.user_id
WHERE post_user_id =1
OR f.user_id IS NOT NULL 
AND post_time < FROM_UNIXTIME( 1374634418 ) 
ORDER BY  `post_id` DESC 
LIMIT 10

これは私が受け取っている post_time です: 投稿時間

実際には、2013-07-24 02:53:38 以降の日付は表示されません。FROM_UNIXTIME の日付は、php の strtotime() で前のクエリの最後の値を使用して生成されます。

4

2 に答える 2

3

ANDより強くバインドするORため、WHERE 条件は次のようになります。

WHERE post_user_id =1
   OR (f.user_id IS NOT NULL AND post_time < FROM_UNIXTIME( 1374634418 ))

... post_user_id が 1 の場合、新しい行が返される可能性があります。

括弧をいくつか追加したい場合があります。

WHERE (post_user_id =1 OR f.user_id IS NOT NULL)
  AND post_time < FROM_UNIXTIME( 1374634418 ) 
于 2013-07-28T18:16:58.897 に答える