Как выбрать случайную запись в Delphi с MySQL без использования Rand ()? - PullRequest
1 голос
/ 27 сентября 2019

Я пытаюсь выбрать случайную запись в таблице, где «Card_Rarity равна определенному значению, например,« Легендарная ». Поэтому он проверит все записи, где карты являются этой редкостью, а затем выберет случайнуюи загрузите его в запрос.

Я попытался использовать «ORDER BY Rand () LIMIT 1», но по какой-то причине я получил синтаксическую ошибку. Затем я также попытался использовать цикл for и использовать qryCards.затем, но это также не работает должным образом

Я пробовал это:

qryCards.SQL.Add('SELECT * FROM tblCards WHERE Card_Rarity = "Legendary" ORDER BY RAND() LIMIT 1');

, но я получаю синтаксическую ошибку

Я также пробовал это:

 with dmCards do
   begin
     qryCards.Close;
     qryCards.SQL.Clear;

     qryCards.SQL.Add('SELECT * FROM tblCards WHERE Card_Rarity = "Legendary"');
     qryCards.Open;
     Randomize;
     iRandom := Random(qryCards.RecordCount) + 1;

     for i := 1 to iRandom do
       begin
         qryCards.Next;
       end;

     ShowMessage(qryCards.FieldByName('Card_Name').AsString);

 end;

Я ожидаю, что на выходе будет имя случайной карты этой особой редкости, но фактический вывод странный, и я не знаю точно, как его описать. Я поставил ShowMessages, чтобы попытаться отладить и когда iRandom= 2 ИЛИ 3 он дает мне то же имя карты, но если его 1, это дает мне другую карту (всего 3 легендарных карты)

...