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

Sử dụng một truy vấn duy nhất để lấy từ nhiều bảng

Bạn có thể đạt được điều này bằng cách tự tham gia, chẳng hạn như:

SELECT DISTINCT e2.eventId
FROM event_tags e1
INNER JOIN event_tags e2 
    ON e2.tagName LIKE CONCAT('%', e1.tagName, '%') AND e2.eventId != e1.eventId
WHERE e1.eventId = {}

Tôi nhận thấy rằng truy vấn thứ hai có LIMIT 3 mệnh đề. Trước hết, xin lưu ý rằng không có ORDER BY mệnh đề này không tạo ra kết quả có thể đoán trước được. Đây là giải pháp dựa trên hàm window ROW_NUMBER() (có sẵn trong MySQL 8), sẽ tạo ra không nhiều hơn 3 event_id cho mỗi thẻ phù hợp:

SELECT DISTINCT event_id FROM (
    SELECT e2.eventId, ROW_NUMBER() OVER(PARTITION BY e1.eventId ORDER BY e2.eventId) rn
    FROM event_tags e1
    INNER JOIN event_tags e2 
        ON e2.tagName LIKE CONCAT('%', e1.tagName, '%') AND e2.eventId != e1.eventId
    WHERE e1.eventId = {}
) WHERE rn <= 3



  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ìm thư mục dữ liệu mysql từ dòng lệnh trong windows

  2. Độ dài tối đa của dữ liệu tôi có thể đặt trong cột BLOB trong MySQL là bao nhiêu?

  3. get_result () Không hoạt động ngay cả khi mysqlnd được bật

  4. ghi nhật ký cập nhật mysql

  5. Truy vấn MySQL chậm trên tuyên bố cập nhật