Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Truy vấn MYSQL - Nhận bài đăng của người dùng hiện tại và người dùng mà anh ta đang theo dõi các bài đăng

Để nhận được tất cả các bài đăng của một người dùng nhất định (id =145) và tất cả những người dùng mà nó theo dõi các bài đăng, cùng với thông tin chi tiết về người dùng cho mỗi bài đăng, tôi sẽ viết lại truy vấn để sử dụng union thay vì hoặc, do đó đơn giản hóa logic. Lựa chọn đầu tiên nhận bài đăng của người dùng nhất định, lựa chọn thứ hai nhận bài đăng của những người dùng mà nó đang theo dõi:

(SELECT P.id as postid, 
       P.caption,
       P.date,
       U.id as userid,
       U.fullname,
       U.username,
FROM USERS AS U
INNER JOIN Posts AS P ON P.userid = U.id
WHERE U.id = 145)
UNION
(SELECT P.id, 
       P.caption,
       P.date,
       U.id,
       U.fullname,
       U.username,
FROM Activity AS A
INNER JOIN USERS AS U ON A.IdOtherUser=U.id
INNER JOIN Posts AS P ON P.userid = U.id
WHERE A.id = 145)
ORDER BY postid DESC

Giả định:

  1. Trường Activity.id đại diện cho người dùng, người theo dõi người dùng khác. Nếu không, bạn cần thay đổi tên trường thành tên thích hợp.

  2. Đã phát minh ra trường userid của bảng Bài đăng đại diện cho người dùng đã đăng bài đăng. Vui lòng sử dụng tên trường chính xác ở vị trí của nó.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách tắt kiểm tra khóa ngoại trong MySQL

  2. PHP PDO trả về kết quả không nhất quán cho SELECT FOUND_ROWS ()

  3. Truy vấn SQL với trung bình và nhóm theo

  4. Có thể thực thi một chuỗi trong MySQL không?

  5. bộ lọc sql / mysql chỉ bao gồm giá trị tối đa