sql >> Databasteknik >  >> RDS >> Mysql

Visar prenumerantinlägg och användarens egna inlägg

Du kan göra det genom att ändra din fråga till :

SELECT POSTS.*
FROM POSTS
LEFT JOIN SUBSCRIBERS
ON POSTS.AUTHORID = SUBSCRIBERS.PROFILEID
WHERE SUBSCRIBERS.SUBSCRIBERID = ? OR POSTS.AUTHORID = ?
GROUP BY POSTS.POSTID ORDER BY POSTS.POSTID DESC LIMIT 10 

Den väljer också användarens egna inlägg. Hoppas detta skulle hjälpa.

Uppdaterad :Lade till GROUP BY POSTS.POSTID så dubbletter tas bort eftersom du bara letar efter data i POSTS bord.

När du kör en fråga som att skicka värden, t.ex. för användare med id 1 ser frågan ut så här:

SELECT POSTS.*
FROM POSTS
LEFT JOIN SUBSCRIBERS
ON POSTS.AUTHORID = SUBSCRIBERS.PROFILEID
WHERE SUBSCRIBERS.SUBSCRIBERID = 1 OR POSTS.AUTHORID = 1 GROUP BY POSTS.POSTID
ORDER BY POSTS.POSTID DESC LIMIT 10

Resultaten är:

PostID  AuthorID    PostDate    PostBody

3       1   2012-12-21  Oh Wait
2       3   2012-12-21  Bye Bye World
1       2   2012-12-20  Hello Word

Detta är vad du får när du skickar värden till urvalsfrågan korrekt. Värdena som skickades till SUBSCRIBERID och AUTHORID bör vara samma. LEFT JOIN skulle lösa ditt problem.




  1. Metoder för att rangordna rader i SQL Server:ROW_NUMBER(), RANK(), DENSE_RANK() och NTILE()

  2. ignorerar mysql fulltext stoppord i frågan

  3. ALTER TABLE-satsen stod i konflikt

  4. MySQL med Node.js