Tôi có cơ sở dữ liệu truy cập MS. Trong đó, một bảng bao gồm các câu hỏi và câu trả lời với ID câu hỏi chính chính. Tôi cần truy xuất câu hỏi ngẫu nhiên từ bảng đó bằng câu hỏiID. Tôi nên sử dụng từ khóa hoặc truy vấn nào cho trường hợp này.Cách nhận bản ghi ngẫu nhiên từ cơ sở dữ liệu MS Access
Trả lời
Sau đây sẽ nhận được một questionID ngẫu nhiên từ bảng
MySQL
SELECT questionID FROM questions ORDER BY RAND() LIMIT 1
MS Access
SELECT top 1 questionID from questions ORDER BY rnd(questionID)
Để có được kỷ lục ngẫu nhiên khác nhau mà bạn có thể sử dụng, mà sẽ đòi hỏi một trường ID trong bảng của bạn
SELECT TOP 1 questionID FROM questions ORDER BY Rnd(-(100000*questionID)*Time())
Giá trị âm được truyền làm tham số cho hàm Rnd sẽ phân phối giá trị ngẫu nhiên đầu tiên từ trình tạo bằng cách sử dụng tham số này làm giá trị bắt đầu. (Một loại ngẫu nhiên được xác định). Đặc biệt cảm ơn gợi ý của @kobik từ các bình luận.
Điều thú vị. Tôi đã kiểm tra tất cả các câu trả lời được đề xuất bao gồm cả việc này tôi nhận được các bản ghi ngẫu nhiên/khác nhau. nhưng ngay sau khi tôi chạy chương trình thử nghiệm của tôi một lần nữa kết quả là trong cùng một trình tự như trước. như thể trình tạo hạt giống ngẫu nhiên đặt lại mỗi lần trong truy cập ms. Sau này tôi tìm thấy điều này: [Trình tạo số ngẫu nhiên không quá ngẫu nhiên] (http://database.ittoolbox.com/groups/technical-functional/access-l/random-number-generator-query-not-so-random- 3887838) – kobik
nó làm cùng một điều bummi, mỗi lần tôi chạy nó tôi nhận được 4 kết quả tương tự –
vì vậy cách bạn đề xuất sửa lỗi @Kobik –
SELECT TOP 5 questionID FROM [tableName] ORDER BY rnd(INT(NOW*questionID)-NOW*questionID)
này sẽ cung cấp cho bạn một bộ mới của câu trả lời mọi thời gian, bạn thậm chí không cần phải tạo nên một thời gian khi bạn sử dụng "NOW" (mà sẽ mỗi khi có một thời gian mới, bạn bấm này không có vấn đề nhanh như thế nào bạn nhấp vào), theo ý kiến của tôi là cách đơn giản và gọn gàng nhất để giải quyết vấn đề này trong Access.
Điều này hoàn toàn phù hợp với tôi. Tất cả các phương thức khác cho cùng một tập hợp các bản ghi. Làm tốt lắm. – MatVAD
phiên bản dành cho MS Access, dường như tạo ra các bản ghi ngẫu nhiên - nhưng cũng giống như các bản ghi đó mỗi lần! – kneidels
AGREE .. cùng một hồ sơ ngẫu nhiên –