2015-07-18 11 views
5

Trong cơ sở dữ liệu MySQL của tôi, tôi có một bảng với các câu hỏi khác nhau trong các chuyên mục khác nhau.Làm thế nào để có được bản ghi RANDOM từ mỗi thể loại trong MySQL?

Tôi muốn viết câu lệnh sql trả về 3 câu hỏi RANDOM của MACHI danh mục.

Dưới đây là ví dụ về các hồ sơ cơ sở dữ liệu:

id question category 
1 Question A 1 
2 Question B 1 
3 Question C 1 
4 Question D 1 
5 Question D 1 
6 Question F 2 
7 Question G 2 
8 Question H 2 
9 Question I 2 
10 Question J 2 
11 Question K 3 
12 Question L 3 
13 Question M 3 
14 Question N 3 
15 Question O 3 
16 Question P 3 

Dưới đây là đầu ra/kết quả của 3 ngẫu nhiên được lựa chọn và xáo trộn từ tất cả các câu hỏi của từng loại từ danh sách trên:

2 Question B 1 
4 Question D 1 
3 Question C 1 
10 Question J 2 
7 Question G 2 
9 Question I 2 
11 Question K 3 
15 Question P 3 
13 Question M 3 

Tôi đã chơi cho đến nay với tuyên bố sau để thử nghiệm:

SELECT * FROM `random` ORDER BY RAND() LIMIT 0,3; 

Trả lại này chỉ có 3 câu hỏi RANDOM từ tất cả các danh mục.

Và tôi đã sau đó nhìn ví dụ tại liên kết này: MYSQL select random of each of the categories

Và cố gắng này:

(SELECT * FROM `random` WHERE category = 1 ORDER BY RAND() LIMIT 3) 
UNION ALL 
(SELECT * FROM `random` WHERE category = 2 ORDER BY RAND() LIMIT 3) 
UNION ALL 
(SELECT * FROM `random` WHERE category = 3 ORDER BY RAND() LIMIT 3) 

Nhưng ở đây tôi cần phải thêm vào mỗi loại bằng tay.

Câu hỏi của tôi: Tôi tự hỏi liệu có thể lấy 3 bản ghi/hàng RANDOM từ mỗi danh mục của tất cả các danh mục (tự động) không?


EDIT

Đây không phải là một phần của câu hỏi nhưng được giúp đỡ.

Dummy tạo dữ liệu Mã truy vấn sẽ bàn gọi random và tạo ra được lưu trữ thủ tục gọi là create_random và khi bạn chạy các thủ tục lưu trữ, nó sẽ tạo ra dữ liệu giả ngẫu nhiên bên trong bảng ngẫu nhiên:

DELIMITER $$ 
DROP TABLE IF EXISTS `random`; 
DROP PROCEDURE IF EXISTS `create_random` $$ 

CREATE TABLE `random` (
    `id` INT(11) NOT NULL AUTO_INCREMENT, 
    `question` VARCHAR(50) NULL DEFAULT NULL, 
    `category` VARCHAR(50) NULL DEFAULT NULL, 
    PRIMARY KEY (`id`) 
) 
COLLATE='latin1_swedish_ci' 
ENGINE=InnoDB 
AUTO_INCREMENT=401 
; 

CREATE DEFINER=`root`@`localhost` 
PROCEDURE `create_random`() 
    LANGUAGE SQL 
    NOT DETERMINISTIC 
    CONTAINS SQL 
    SQL SECURITY DEFINER 
    COMMENT '' 

BEGIN 

DECLARE v_max int unsigned DEFAULT 100; 
DECLARE v_counter int unsigned DEFAULT 0; 
DECLARE cat_counter int unsigned DEFAULT 0; 

    TRUNCATE TABLE `random`; 
    START TRANSACTION; 
    WHILE v_counter < v_max DO 
    IF v_counter %10=0 THEN SET cat_counter=cat_counter+1; 
    END IF; 
    INSERT INTO `random` (question, category) VALUES (CONCAT('Question', FLOOR(0 + (RAND() * 65535))), cat_counter); 
    SET v_counter=v_counter+1; 
    END WHILE; 
    COMMIT; 
END 

Note : Tôi đã thử tất cả các câu trả lời và tất cả đều hoạt động tốt. Gordon Linoff và pjanaway trả lời chọn RANDOM chỉ từ 3 câu hỏi hàng đầu hoặc dưới 3, tôi đã kiểm tra Gordon trả lời bởi vì anh ta trả lời trước, nhưng điều đó không có nghĩa là câu trả lời khác không tốt, tất cả đều tốt và tùy thuộc vào người dùng chọn câu trả lời đúng hoặc kết hợp các câu trả lời. Tôi yêu tất cả các câu trả lời và bỏ phiếu cho họ. Drew Pierce trả lời mới cho câu hỏi này, nó là thú vị hơn ngay bây giờ và gần như gần mục tiêu. Cảm ơn tất cả.

+0

Thật sự thú vị nếu các từ trong câu hỏi cũng là ngẫu nhiên. Nhưng nghiêm túc có vẻ như bạn là 90% ở đó. Có phải là bạn muốn thứ tự trình bày bị xáo trộn một chút (có nghĩa là, không phải một danh mục theo sau là thứ khác)? Hoặc là nó là phần cuối cùng tôi đọc ba lần: bạn muốn tất cả tự động không phải bằng tay thêm một công đoàn mới cho mỗi thể loại mới? Có lẽ sau này, xin lỗi. – Drew

+0

@DrewPierce, vâng, câu lệnh sql ý tưởng nên xáo trộn các câu hỏi cùng thể loại để mọi người trả lời hoặc nhận được câu hỏi không nên mong đợi nhận được cùng một câu hỏi mọi lúc. Ví dụ là nhỏ, nhưng sẽ có rất nhiều câu hỏi của mỗi thể loại và khác nhau, chỉ cần tưởng tượng nếu tôi thêm thể loại mới mỗi tuần, sau đó tôi cần phải sửa đổi câu lệnh sql của tôi liên tục, nhưng nếu tôi làm một cách tự động thì nó sẽ làm cho ngày của tôi dễ dàng hơn;) lol –

+0

câu hỏi này hy vọng kiếm được cho bạn một số điểm xứng đáng vì nó có vẻ rất hữu ích trong nhiều cài đặt! – Drew

Trả lời

3

Có, bạn có thể làm điều này bằng cách liệt kê các hàng và sau đó lấy ba người đứng đầu:

select r.id, r.question, r.category 
from (select r.*, 
      (@rn := if(@c = category, @rn + 1, 
         if(@c := category, 1, 1) 
         ) 
      ) as seqnum 
     from `random` r cross join 
      (select @rn := 0, @c := -1) params 
     order by category, rand() 
    ) r 
where seqnum <= 3; 
+0

lời chào Gordon. Tôi gặp vấn đề với kết quả. có lẽ tốt nhất để đọc pastie theo câu trả lời của pj dưới đây ** đầu tiên **, sau đó điều này với truy vấn bên trong của bạn. http://pastie.org/10300277 – Drew

+0

Có một thử thách nhỏ ở đây.Bây giờ tôi đã xây dựng một cơ sở dữ liệu ngẫu nhiên lớn hơn để thử nghiệm, và khi tôi chạy mã của bạn và pjanaway cả hai đều chọn ba câu hỏi và cứ xáo trộn chúng nhưng khi tôi chạy lại mã, nó vẫn giữ nguyên các câu hỏi, ý tưởng là tôi có nhiều hơn ba các câu hỏi trong mỗi thể loại, cần có 3 người trong số họ và chọn ngẫu nhiên từ tất cả các câu hỏi và trộn chúng. Trong mã của bạn nó giữ chỉ mất ba câu hỏi đầu tiên và @ pjanaway nó có ba câu hỏi cuối cùng? –

+1

@maytham. . . Nếu mã trả về cùng ba câu hỏi, thì một khả năng là hạt giống cho trình tạo số ngẫu nhiên đang được đặt lại. Bạn có thể thử thiết lập nó theo cách thủ công để xem bạn có nhận được kết quả khác không (https://dev.mysql.com/doc/refman/5.6/en/mathematical-functions.html#function_rand). –

4

Bên cạnh những câu trả lời khác, đây cũng là một cách khác để làm điều đó.

SELECT r.* FROM random r 
WHERE (
    SELECT COUNT(*) FROM random r1 
    WHERE r.category = r1.category AND r.id < r1.id 
) <= 2 
ORDER BY r.category ASC, RAND() 
+0

Tôi không thể giúp Gordon làm việc nhưng tôi có thể làm việc này. sẽ hiển thị một pastie – Drew

+0

@DrewPierce Mã này hoạt động nhỏ gọn hơn, chúng tôi đã cập nhật câu trả lời Gordon bạn đã thử cập nhật lần cuối chưa? –

+0

vâng tôi đã thử nó 3 lần tôi biết nó đã được cập nhật nhưng tôi sẽ thử lại – Drew

1
create schema so_gibberish; -- creates database 
use so_gibberish; -- use it 

-- drop table random; -- during debug 
create table random 
( id int auto_increment primary key, 
    question varchar(50) not null, 
    category int not null, 
    randomOrder int not null, 
    key (category) 
); 

-- drop table questions_for_user; -- during debug 
create table questions_for_user 
( physcOrder int auto_increment primary key, 
    id int not null, 
    question varchar(50) not null, 
    category int not null, 
    randomOrder int not null, 
    key (category) 
); 

Tạo một thủ tục lưu trữ để chèn câu hỏi ngẫu nhiên. Nó tạo ra 300 tại một thời điểm khi bạn gọi nó.

DELIMITER $$ 
drop procedure if exists createRandomQuestions$$ 
-- 17 categories of questions randomly created. yes random word questions and categories. 

create procedure createRandomQuestions() 
BEGIN 
set @i=1; 
WHILE @i<=300 DO 
insert random (question,category) values ('xxx',1); 
SELECT @lid:=LAST_INSERT_ID(); -- use id to seed, next 8 guaranteed different i think 

UPDATE random SET question=concat(
substring('ABCDEFGHIJKLMNOPQRSTUVWXYZ', rand(@seed:=round(rand(@lid)*4294967296))*36+1, 1), 
substring('ABCDEFGHIJKLMNOPQRSTUVWXYZ', rand(@seed:=round(rand(@seed)*4294967296))*36+1, 1), 
substring('ABCDEFGHIJKLMNOPQRSTUVWXYZ', rand(@seed:=round(rand(@seed)*4294967296))*36+1, 1), 
substring('ABCDEFGHIJKLMNOPQRSTUVWXYZ', rand(@seed:=round(rand(@seed)*4294967296))*36+1, 1), 
substring('ABCDEFGHIJKLMNOPQRSTUVWXYZ', rand(@seed:=round(rand(@seed)*4294967296))*36+1, 1), 
substring('ABCDEFGHIJKLMNOPQRSTUVWXYZ', rand(@seed:=round(rand(@seed)*4294967296))*36+1, 1), 
substring('ABCDEFGHIJKLMNOPQRSTUVWXYZ', rand(@seed:=round(rand(@seed)*4294967296))*36+1, 1), 
substring('ABCDEFGHIJKLMNOPQRSTUVWXYZ', rand(@seed)*36+1, 1), ' ?' 
), category=floor(rand()*17+1),randomOrder=0 
WHERE [email protected]; 
set @[email protected]+1; 
END WHILE; 
END; 
$$ 
DELIMITER ; 

gọi nó:

call createRandomQuestions(); 

để kiểm tra:

select category,count(*) from random group by category order by category; 
select count(*) from random; 
select * from random limit 10; 

Bây giờ có được ba câu hỏi ngẫu nhiên cho mỗi danh mục để người dùng theo yêu cầu.

Hãy đưa ra thuật toán SEEDING ngẫu nhiên tốt. Dưới đây vẫn còn sơ khai, tốt nhất để sử dụng một nguồn bên ngoài như http đến một dịch vụ vv

update random set randomOrder=rand()*unix_timestamp(); 
truncate table questions_for_user; 
insert into questions_for_user (id,question,category,randomOrder) 
select id,question,category,randomOrder from random order by rand(); 

select r.* 
FROM questions_for_user r 
WHERE 
(SELECT COUNT(*) FROM random r1 WHERE r.category = r1.category AND r.id < r1.id) <= 2 
ORDER by r.category ASC, randomOrder; 

+------------+-----+------------+----------+-------------+ 
| physcOrder | id | question | category | randomOrder | 
+------------+-----+------------+----------+-------------+ 
|  297 | 266 | JNQH26DD ? |  1 | 841700408 | 
|  247 | 286 | ORK15577 ? |  1 | 980764662 | 
|   54 | 267 | T2HPRW88 ? |  1 | 1331420535 | 
|  190 | 275 | U5BFCUFF ? |  2 | 836160445 | 
|  192 | 285 | E3KDJ144 ? |  2 | 1166207975 | 
|   55 | 293 | GFWQ0BEE ? |  2 | 1356597807 | 
|  266 | 296 | 8MJCWR55 ? |  3 | 1121232849 | 
|  173 | 288 | 6GGOI2CC ? |  3 | 1209081435 | 
|  205 | 231 | LQMYMV44 ? |  3 | 1330946482 | 
|  103 | 289 | FUODJHJJ ? |  4 | 392498036 | 
|  274 | 295 | Y85VNBWW ? |  4 | 613800522 | 
|  204 | 280 | 441X1YTT ? |  4 | 1141251557 | 
|  162 | 273 | CC5FGKFF ? |  5 | 99041401 | 
|   36 | 252 | Y7V58ZEE ? |  5 | 1124240820 | 
|  143 | 234 | DWZULKBB ? |  5 | 1286225785 | 
|   15 | 276 | 3J1KGJZZ ? |  6 | 51285374 | 
|  265 | 294 | PTEMZ7GG ? |  6 | 649256602 | 
|   91 | 271 | TNG23R11 ? |  6 | 1393790410 | 
|   90 | 277 | DXE1W0GG ? |  7 | 622567356 | 
|   20 | 274 | LQTFS7RR ? |  7 | 1376505632 | 
|  121 | 279 | VQN6TVSS ? |  7 | 1428714367 | 
|  268 | 265 | A99UU1YY ? |  8 | 479923553 | 
|  242 | 284 | 5PDRR5YY ? |  8 | 658551160 | 
|  283 | 282 | NWZSPCZZ ? |  8 | 802197234 | 
|  114 | 233 | 3IHU1YKK ? |  9 | 118146688 | 
|   85 | 226 | BQTD6A44 ? |  9 | 292147382 | 
|  255 | 291 | YNT0YN11 ? |  9 | 559911752 | 
|  281 | 258 | IHK46577 ? |  10 | 196799301 | 
|  198 | 263 | SHEVXPBB ? |  10 | 545833955 | 
|   11 | 298 | QEHHSAEE ? |  10 | 1087006220 | 
|   60 | 250 | GEH9PVBB ? |  11 | 225193615 | 
|  270 | 272 | 3YY2EMM ? |  11 | 1143544695 | 
|  300 | 290 | O8B4WRCC ? |  11 | 1209867696 | 
|   68 | 246 | FTEEVJ00 ? |  12 | 608441021 | 
|  177 | 244 | X1JYHUBB ? |  12 | 1192309224 | 
|  208 | 240 | W771N588 ? |  12 | 1347800170 | 
|  249 | 300 | 97V6UXYY ? |  13 | 500846709 | 
|  100 | 292 | 71JZTMQQ ? |  13 | 607266604 | 
|   38 | 283 | WBQ0DGLL ? |  13 | 1187952919 | 
|   87 | 235 | MBPPXJ44 ? |  14 | 327445349 | 
|  178 | 242 | EZ1ET3ZZ ? |  14 | 852480639 | 
|   62 | 281 | EIHVH3ZZ ? |  14 | 1420114728 | 
|   95 | 251 | PT8E2CII ? |  15 | 72502146 | 
|  170 | 253 | 8L35PFYY ? |  15 | 1091765038 | 
|   65 | 287 | X5ZR3LHH ? |  15 | 1405199431 | 
|  138 | 278 | MBW03OUU ? |  16 | 84358922 | 
|   7 | 268 | 2G4G42WW ? |  16 | 1257379717 | 
|   1 | 299 | ZT8QRRMM ? |  16 | 1327297420 | 
|  221 | 297 | H00HLNRR ? |  17 | 890140945 | 
|   40 | 204 | O7VUW2NN ? |  17 | 1238474743 | 
|  122 | 229 | 3XEZG0PP ? |  17 | 1359337651 | 
+------------+-----+------------+----------+-------------+ 
51 rows in set (0.01 sec) 

Run nó một lần nữa cho người sử dụng tiếp theo hoặc cùng chàng:

update random set randomOrder=rand()*unix_timestamp(); 
truncate table questions_for_user; 
insert into questions_for_user (id,question,category,randomOrder) 
select id,question,category,randomOrder from random order by rand(); 

select r.* 
FROM questions_for_user r 
WHERE 
(SELECT COUNT(*) FROM random r1 WHERE r.category = r1.category AND r.id < r1.id) <= 2 
ORDER by r.category ASC, randomOrder; 

+------------+-----+------------+----------+-------------+ 
| physcOrder | id | question | category | randomOrder | 
+------------+-----+------------+----------+-------------+ 
|  112 | 286 | ORK15577 ? |  1 | 193281314 | 
|  176 | 266 | JNQH26DD ? |  1 | 530153269 | 
|  296 | 267 | T2HPRW88 ? |  1 | 891041924 | 
|   37 | 293 | GFWQ0BEE ? |  2 | 222852606 | 
|  239 | 285 | E3KDJ144 ? |  2 | 679635152 | 
|  262 | 275 | U5BFCUFF ? |  2 | 846163956 | 
|   95 | 288 | 6GGOI2CC ? |  3 | 1244253481 | 
|   81 | 231 | LQMYMV44 ? |  3 | 1380298624 | 
|   59 | 296 | 8MJCWR55 ? |  3 | 1420850554 | 
|   28 | 295 | Y85VNBWW ? |  4 | 806083444 | 
|   30 | 289 | FUODJHJJ ? |  4 | 814854070 | 
|   34 | 280 | 441X1YTT ? |  4 | 1119188021 | 
|  232 | 234 | DWZULKBB ? |  5 | 296692881 | 
|  295 | 273 | CC5FGKFF ? |  5 | 337915901 | 
|  140 | 252 | Y7V58ZEE ? |  5 | 644987638 | 
|  257 | 271 | TNG23R11 ? |  6 | 619359840 | 
|   27 | 294 | PTEMZ7GG ? |  6 | 869855570 | 
|  218 | 276 | 3J1KGJZZ ? |  6 | 1390090875 | 
|   64 | 279 | VQN6TVSS ? |  7 | 33942495 | 
|  290 | 277 | DXE1W0GG ? |  7 | 100007602 | 
|  173 | 274 | LQTFS7RR ? |  7 | 946909650 | 
|  291 | 265 | A99UU1YY ? |  8 | 107468716 | 
|   49 | 284 | 5PDRR5YY ? |  8 | 1068298164 | 
|  228 | 282 | NWZSPCZZ ? |  8 | 1115906220 | 
|  284 | 226 | BQTD6A44 ? |  9 | 45678738 | 
|  179 | 291 | YNT0YN11 ? |  9 | 700305900 | 
|  164 | 233 | 3IHU1YKK ? |  9 | 1416089612 | 
|  193 | 258 | IHK46577 ? |  10 | 460111512 | 
|  214 | 298 | QEHHSAEE ? |  10 | 482322673 | 
|   7 | 263 | SHEVXPBB ? |  10 | 766681927 | 
|  178 | 290 | O8B4WRCC ? |  11 | 341509950 | 
|   31 | 272 | 3YY2EMM ? |  11 | 726662739 | 
|  297 | 250 | GEH9PVBB ? |  11 | 1386568968 | 
|   32 | 240 | W771N588 ? |  12 | 303493686 | 
|  283 | 246 | FTEEVJ00 ? |  12 | 710591266 | 
|  177 | 244 | X1JYHUBB ? |  12 | 916685336 | 
|  212 | 283 | WBQ0DGLL ? |  13 | 595739692 | 
|  159 | 300 | 97V6UXYY ? |  13 | 688431139 | 
|   52 | 292 | 71JZTMQQ ? |  13 | 1039681379 | 
|   56 | 235 | MBPPXJ44 ? |  14 | 109832248 | 
|  207 | 242 | EZ1ET3ZZ ? |  14 | 418951740 | 
|   6 | 281 | EIHVH3ZZ ? |  14 | 1182157711 | 
|  149 | 287 | X5ZR3LHH ? |  15 | 364819476 | 
|   88 | 251 | PT8E2CII ? |  15 | 673475236 | 
|  123 | 253 | 8L35PFYY ? |  15 | 1204512525 | 
|  190 | 278 | MBW03OUU ? |  16 | 641720378 | 
|  160 | 299 | ZT8QRRMM ? |  16 | 1289470813 | 
|   75 | 268 | 2G4G42WW ? |  16 | 1427431541 | 
|  202 | 297 | H00HLNRR ? |  17 | 374047531 | 
|  243 | 204 | O7VUW2NN ? |  17 | 951026810 | 
|  300 | 229 | 3XEZG0PP ? |  17 | 1319302198 | 
+------------+-----+------------+----------+-------------+ 
51 rows in set (0.01 sec) 

Vì vậy, câu hỏi là khác nhau.

Để có được kết quả cuối cùng trong một cảm giác xáo trộn:

select r.* 
FROM questions_for_user r 
WHERE 
(SELECT COUNT(*) FROM random r1 WHERE r.category = r1.category AND r.id < r1.id) <= 2 
ORDER by randomOrder; 

+------------+-----+------------+----------+-------------+ 
| physcOrder | id | question | category | randomOrder | 
+------------+-----+------------+----------+-------------+ 
|   64 | 279 | VQN6TVSS ? |  7 | 33942495 | 
|  284 | 226 | BQTD6A44 ? |  9 | 45678738 | 
|  290 | 277 | DXE1W0GG ? |  7 | 100007602 | 
|  291 | 265 | A99UU1YY ? |  8 | 107468716 | 
|   56 | 235 | MBPPXJ44 ? |  14 | 109832248 | 
|  112 | 286 | ORK15577 ? |  1 | 193281314 | 
|   37 | 293 | GFWQ0BEE ? |  2 | 222852606 | 
|  232 | 234 | DWZULKBB ? |  5 | 296692881 | 
|   32 | 240 | W771N588 ? |  12 | 303493686 | 
|  295 | 273 | CC5FGKFF ? |  5 | 337915901 | 
|  178 | 290 | O8B4WRCC ? |  11 | 341509950 | 
|  149 | 287 | X5ZR3LHH ? |  15 | 364819476 | 
|  202 | 297 | H00HLNRR ? |  17 | 374047531 | 
|  207 | 242 | EZ1ET3ZZ ? |  14 | 418951740 | 
|  193 | 258 | IHK46577 ? |  10 | 460111512 | 
|  214 | 298 | QEHHSAEE ? |  10 | 482322673 | 
|  176 | 266 | JNQH26DD ? |  1 | 530153269 | 
|  212 | 283 | WBQ0DGLL ? |  13 | 595739692 | 
|  257 | 271 | TNG23R11 ? |  6 | 619359840 | 
|  190 | 278 | MBW03OUU ? |  16 | 641720378 | 
|  140 | 252 | Y7V58ZEE ? |  5 | 644987638 | 
|   88 | 251 | PT8E2CII ? |  15 | 673475236 | 
|  239 | 285 | E3KDJ144 ? |  2 | 679635152 | 
|  159 | 300 | 97V6UXYY ? |  13 | 688431139 | 
|  179 | 291 | YNT0YN11 ? |  9 | 700305900 | 
|  283 | 246 | FTEEVJ00 ? |  12 | 710591266 | 
|   31 | 272 | 3YY2EMM ? |  11 | 726662739 | 
|   7 | 263 | SHEVXPBB ? |  10 | 766681927 | 
|   28 | 295 | Y85VNBWW ? |  4 | 806083444 | 
|   30 | 289 | FUODJHJJ ? |  4 | 814854070 | 
|  262 | 275 | U5BFCUFF ? |  2 | 846163956 | 
|   27 | 294 | PTEMZ7GG ? |  6 | 869855570 | 
|  296 | 267 | T2HPRW88 ? |  1 | 891041924 | 
|  177 | 244 | X1JYHUBB ? |  12 | 916685336 | 
|  173 | 274 | LQTFS7RR ? |  7 | 946909650 | 
|  243 | 204 | O7VUW2NN ? |  17 | 951026810 | 
|   52 | 292 | 71JZTMQQ ? |  13 | 1039681379 | 
|   49 | 284 | 5PDRR5YY ? |  8 | 1068298164 | 
|  228 | 282 | NWZSPCZZ ? |  8 | 1115906220 | 
|   34 | 280 | 441X1YTT ? |  4 | 1119188021 | 
|   6 | 281 | EIHVH3ZZ ? |  14 | 1182157711 | 
|  123 | 253 | 8L35PFYY ? |  15 | 1204512525 | 
|   95 | 288 | 6GGOI2CC ? |  3 | 1244253481 | 
|  160 | 299 | ZT8QRRMM ? |  16 | 1289470813 | 
|  300 | 229 | 3XEZG0PP ? |  17 | 1319302198 | 
|   81 | 231 | LQMYMV44 ? |  3 | 1380298624 | 
|  297 | 250 | GEH9PVBB ? |  11 | 1386568968 | 
|  218 | 276 | 3J1KGJZZ ? |  6 | 1390090875 | 
|  164 | 233 | 3IHU1YKK ? |  9 | 1416089612 | 
|   59 | 296 | 8MJCWR55 ? |  3 | 1420850554 | 
|   75 | 268 | 2G4G42WW ? |  16 | 1427431541 | 
+------------+-----+------------+----------+-------------+ 
51 rows in set (0.01 sec) 

Lý do câu trả lời khác dường như được trở về những câu hỏi tương tự (top 3 hoặc dưới 3) imo là vì thứ tự vật lý của bảng , đó là lý do tôi tạo bảng thứ 2. Bảng thứ hai sử dụng một trật tự vật lý không có thật mới và chèn vào nó là thông qua thứ tự ngẫu nhiên (vì vậy vấn đề trật tự vật lý không tồn tại). Hy vọng rằng có ý nghĩa.

Và tất nhiên tôi đã tìm ra câu trả lời từ pjanaway và không thể khiến Gordon làm việc trên hệ thống của tôi mặc dù tôi thích phương pháp thay đổi của anh ấy.

Chúc may mắn.

+0

Đây cũng là một giải pháp tuyệt vời. thx và bình chọn. –

Các vấn đề liên quan