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

    −164

    1. 1
    SELECT LAST_INSERT_ID() FROM comments;

    Подозреваю, что баян, но найти в чистом виде здесь не смог. Номинант на звание самого короткого анекдота на SQL.

    Запостил: inkanus-gray, 29 Апреля 2013

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

    • плохо понимаю тонкости SQL, объясните в чем анекдот?)
      Ответить
      • LAST_INSERT_ID() возвращает последний ID по всей БД, без учета таблиц. Это глобальная функция, а не агрегатная вроде MAX() или COUNT(). А в данном запросе он вернет этот ID ровно столько раз, сколько записей содержится в таблице comments.
        Ответить
        • хуясе, просвятили.. запомню, спасибо.
          насчет поведения LAST_INSERT_ID() знал, что она берет последний. но думал, что если указать таблицу, то вообще ошибку выплюнет) до практики руки не дошли


          ___

          прочел комент ниже
          Ответить
    • Кстати не такой уж и анекдот на некоторых субд... На некоторых субд это жестокая реальность, т.к. они не могут распарсить select без from.
      Ответить
      • Только для этой цели придумали sysibm.sysdummy1 (х.з., как это в остальных СУБД).
        Ответить
    • SELECT TOP(1) LAST_INSERT_ID() FROM FROM comments;
      Ответить
      • оптимальненько.
        Ответить
        • FROM лишний раз опечатался.
          Ответить
        • Я так понимаю это саразм? У тебя есть вариант лучше?
          Ответить
          • > есть вариант лучше
            Ну в мускуле (и многих других субд) есть - опустить from. Там где нельзя - ну или готовую таблицу с одной записью, или самому такую сделать.
            Ответить
      • Немного оптимизации:
        select last_insert_id() from comments cross join users;
        Ответить
        • А чем хуже или лучше варианта с топом?
          Ответить
          • we need moar records
            Ответить
            • Ты вместо одной записи сделал len(comments)*len(users).
              Нужно было код зеленым писать, а то я вчера глупость спросил спросоня.
              Ответить
        • Дьявол во плоти
          Ответить

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