<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Как отловить первый свободный id с autoincrement</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8550.html</link>
    <description>День добрый всем!&lt;br&gt;&lt;br&gt;Вопросик вот такой, кто знает ответ, подскажите пожалуйста.&lt;br&gt;&lt;br&gt;Имеем таблицу с полем id и свойством autoincrement&lt;br&gt;&lt;br&gt;в поле забиты значения&lt;br&gt;&lt;br&gt;1&lt;br&gt;2&lt;br&gt;3&lt;br&gt;4&lt;br&gt;10&lt;br&gt;&lt;br&gt;Как запросом отловить первый свободный, ранее используемый id, то есть 5?&lt;br&gt;&lt;br&gt;Просьба, вопросов типа (зачем это нужно), не задавать.&lt;br&gt;&lt;br&gt;С Уважением Дмитрий. &lt;br&gt;</description>

<item>
    <title>Как отловить первый свободный id с autoincrement (Аноним)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8550.html#20</link>
    <pubDate>Sun, 07 Feb 2010 11:12:45 GMT</pubDate>
    <description>В один запрос (поле free_first_id - искомое значение):&lt;br&gt;&lt;br&gt;select (cc + 1) as free_first_id,  cc, id, id - cc from ( select &#064;d as cc, &#064;d:=id, id from table, (select &#064;d:=0) as t0 order by id ) as t1 where id - cc &amp;gt;1 LIMIT 1;&lt;br&gt;</description>
</item>

<item>
    <title>Как отловить первый свободный id с autoincrement (BigHo)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8550.html#19</link>
    <pubDate>Sat, 06 Feb 2010 13:53:53 GMT</pubDate>
    <description>Хорошая возможность убить СУБД на среднем объеме строк и частой вставке.&lt;br&gt;</description>
</item>

<item>
    <title>Как отловить первый свободный id с autoincrement (Тимофей)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8550.html#18</link>
    <pubDate>Sat, 06 Feb 2010 13:20:15 GMT</pubDate>
    <description>&amp;gt;Ещё проще select min(id+1) from test a where id+1 not in (select &lt;br&gt;&amp;gt;id from test); &lt;br&gt;&lt;br&gt;Одна слабость. Если id=1 отсутствует = то он не будет выдан.&lt;br&gt;</description>
</item>

<item>
    <title>Как отловить первый свободный id с autoincrement (tux2002)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8550.html#17</link>
    <pubDate>Tue, 29 Dec 2009 09:43:36 GMT</pubDate>
    <description>Ещё проще select min(id+1) from test a where id+1 not in (select id from test);&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Как отловить первый свободный id с autoincrement (tux2002)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8550.html#16</link>
    <pubDate>Mon, 28 Dec 2009 13:52:44 GMT</pubDate>
    <description>Фигня вариант, программисты подсказали лучше.&lt;br&gt;select min(a.id) from (select id+1 as id from test union select id as id from test) a where a.id not in (select id from test);&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Как отловить первый свободный id с autoincrement (tux2002)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8550.html#15</link>
    <pubDate>Mon, 28 Dec 2009 12:55:51 GMT</pubDate>
    <description>&amp;gt; Как взять множество от min(id) до max(id) &lt;br&gt;&amp;gt;я ч.г. не помню, но пример был на прошлой работе. &lt;br&gt;&lt;br&gt;select cast(concat(a.x,b.x,c.x,d.x,e.x) as unsigned) as id from (select id as x from test ) a, (select id as x from test) b, (select id as x from test) c, (select id as x from test) d, (select id as x from test) e where id &amp;gt;= min_id and id &amp;lt;= max_id;&lt;br&gt;&lt;br&gt;Для 5 знакомест где test:&lt;br&gt;id&lt;br&gt;0&lt;br&gt;1&lt;br&gt;2&lt;br&gt;3&lt;br&gt;4&lt;br&gt;5&lt;br&gt;6&lt;br&gt;7&lt;br&gt;8&lt;br&gt;9&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Как отловить первый свободный id с autoincrement (tux2002)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8550.html#14</link>
    <pubDate>Mon, 28 Dec 2009 12:36:44 GMT</pubDate>
    <description>&amp;gt;С Уважением Дмитрий. &lt;br&gt;&lt;br&gt;По простому взять (множество от min(id) до max(id)) minus (select id from table) получим свободные id. Как взять множество от min(id) до max(id) я ч.г. не помню, но пример был на прошлой работе.&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Как отловить первый свободный id с autoincrement (DeadLoco)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8550.html#13</link>
    <pubDate>Thu, 24 Dec 2009 16:34:39 GMT</pubDate>
    <description>&amp;gt;предложу первый пришедший в голову вариант )) типа деление отрезка пополам &lt;br&gt;&lt;br&gt;Кстати, очень хорошее решение.&lt;br&gt;</description>
</item>

<item>
    <title>Как отловить первый свободный id с autoincrement (аноним)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8550.html#12</link>
    <pubDate>Fri, 18 Dec 2009 14:21:01 GMT</pubDate>
    <description>&amp;gt;По этому я решил поинтересоваться как более опытные люди решат ее. &lt;br&gt;&lt;br&gt;Более опытные люди решают реальные задачи, а не подобным ананизмом занимаются. На собеседовании в голову должно сразу прийти два варианта - с последовательной выборкой и left join, для второго случая обязательно сказать что нужно посмотреть explain, прежде чем выполнять. Все.&lt;br&gt;</description>
</item>

</channel>
</rss>
