2

したがって、次のような2つのテーブルがあります。

表は次のとおりです。

follower   |   following
-----------+-------------
1          |   2
-----------+-------------
1          |   3
-----------+-------------
2          |   1
-----------+-------------
1          |   4         
-----------+-------------

(これは基本的に、サイトでどのユーザーがどのユーザーをフォローしているかを含む表です...数字はユーザーIDです)

表の記事:

id    |    title    |   writer
------+-------------+---------
1     |    a test   |   2      
------+-------------+---------
2     |    testing  |   3     
------+-------------+---------
3     |    another  |   2     
------+-------------+---------
4     |    again    |   4
------+-------------+---------

(idは自動インクリメント フィールドです。title記事のタイトルが含まれます。writerそれを書いたユーザーの ID が含まれます)

これで、次のようなmysqlクエリができました。

SELECT * FROM follows f INNER JOIN articles a ON f.following = a.writer WHERE f.follower = 1 ORDER BY a.id DESC LIMIT 4, 2;

しかし、 が 4 より小さい2 つの記事テーブルから取り出したい結果が得られません idDESCLIMIT

id(だから私は2と3を持つ記事を取得したい.)

しかし、うまくいきません。どうすればこれを行うことができますか? 助けてください!ありがとう!

4

3 に答える 3

2

IDが4よりも小さい2つの記事をテーブルから取り出したいと思います。

次に、これを試してください:

SELECT *
FROM follows f 
INNER JOIN
(
     SELECT *
     FROM articles
     WHERE id > 1 
        OR id < 4
) a ON f.following = a.writer
WHERE f.follower = 1
ORDER BY a.id

または:

SELECT *
FROM follows f 
INNER JOIN articles a ON f.following = a.writer
WHERE f.follower = 1 
  AND (a.id > 1 OR a.id < 4 )

ORDER BY a.id
于 2012-10-31T11:11:53.127 に答える
2

クエリで間違って使用LIMITしています。クエリは、あなたがフォローしている著者が書いたすべての記事を article.id の降順で並べた4 行を返します。しかし、LIMIT 4, 2最初の 4 行をスキップしてから、最初の 2 行を返しています。4 行しか見つからないため、結果は空です。

結果は正しく並べられているため、最後の 2 つの記事が必要な場合は、最初の 2 つの行を選択する必要があります。

SELECT * 
FROM 
  test_follows f INNER JOIN test_articles a ON f.following = a.writer 
WHERE 
  f.follower = 1
ORDER BY 
  a.id DESC 
LIMIT 2
于 2012-10-31T12:27:12.587 に答える
1

これがあなたが望むワットかどうかわからない..これを試してみてください。

mysql_query("SELECT * FROM follows f INNER JOIN articles a ON f.following = a.writer WHERE f.follower = 1  and a.id < 4 ORDER BY a.id ");

記事を入手した場合。idが4よりも小さい(小さい)場合は、これが役立つことを願っています。

于 2012-10-31T11:12:32.750 に答える