1. SQL / Говнокод #19338

    −50

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    BEGIN
    	DECLARE CloneID INTEGER DEFAULT 0;
      SET CloneID = (SELECT `id` FROM `users` WHERE (`level` >= ulvl) and (`level`<= ulvl + 2) and (`id`<>uid) ORDER BY RAND() LIMIT 0,1);
      RETURN IFNULL(CloneID,0);
    END

    Получения рандомного идентификатора по двум условиям, жесть то какая. Но лучше я пока не придумал.

    Запостил: Cynicrus, 20 Января 2016

    Комментарии (1) RSS

    • Немного подскажу
      where level BETWEEN ulvl and ulvl+2
      and id <> uid...

      Ну и, небольшая придирочка, вы либо экранируйте имена, либо нет, либо экранируйте только системные.
      Ответить

    Добавить комментарий