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

Còn lại Tham gia một MySQL Bản ghi Ngẫu nhiên Duy nhất

RAND() truy vấn con của bạn không mang tính xác định và do đó được thực thi cho mọi hàng trong Sponsor bảng và mỗi lần kiểm tra lại một ID ngẫu nhiên có thể khớp hoặc không khớp với ID của hàng hiện tại. Vì vậy, không chỉ có thể mà không có hàng nào khớp với ID ngẫu nhiên. Cũng có thể có nhiều hàng.

Đối với dữ liệu mẫu có hai nhà tài trợ, truy vấn con có thể trả về các giá trị sau:

  • (1, 1) sẽ khớp với hàng đầu tiên (1 =1, 2 =1)
  • (1, 2) sẽ khớp với cả hai hàng (1 =1, 2 =2)
  • (2, 1) sẽ không khớp với hàng (1 =2, 2 =1)
  • (2, 2) sẽ khớp với hàng thứ hai (1 =2, 2 =2)

Để đảm bảo rằng truy vấn con chỉ được thực thi một lần, bạn có thể sử dụng mệnh đề SELECT. Sau đó, tham gia kết quả dưới dạng bảng dẫn xuất với Sponsor bảng:

SELECT C.*, S.Name AS SponName 
FROM (
    SELECT C.ID AS CompID, C.Name AS CompName, (
        SELECT ID FROM Sponsor WHERE Company = C.ID ORDER BY RAND() LIMIT 1
    ) as SponID
    FROM Company C
) C
LEFT JOIN Sponsor S ON S.ID = C.SponID

Bản trình diễn: http://rextester.com/LSSJT25902




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chèn nhiều giá trị vào nhiều cột từ một mảng dữ liệu bằng cách sử dụng câu lệnh PDO được chuẩn bị cho MySQL

  2. Riêng biệt phiên bản khác nhau của một trang web

  3. Tên ngôn ngữ lập trình cụ thể SQL của MySQL là gì?

  4. MySQL không chọn hàng có id đã cho

  5. Lỗi MySQL khi tạo khóa ngoại với di chuyển Laravel