в чем ошибка «каждая производная таблица должна иметь свой собственный псевдоним» в mysql?

<p>я выполняю этот запрос на mysql</p><pre><code>select id from ( select id, msisdn from ( select * from tt2 ) ); </code></pre><p>и это дает эту ошибку:</p><blockquote> <p>каждая производная таблица должна иметь свой псевдоним.</p> </blockquote><p>что вызывает эту ошибку?</p>

<p>каждая производная таблица (подзапрос aka) должна действительно иметь псевдоним. то есть каждому запросу в скобках должен быть присвоен псевдоним (<code>as whatever</code>), который можно использовать для ссылки на него в остальной части внешнего запроса.</p><pre><code>select id from ( select id, msisdn from ( select * from tt2 ) as t ) as t </code></pre><p>в вашем случае, конечно, весь запрос можно заменить на:</p><pre><code>select id from tt2 </code></pre>

<p>я думаю, что он просит вас сделать это:</p><pre><code>select id from (select id, msisdn from (select * from tt2) as myalias ) as anotheralias; </code></pre><p>но зачем писать этот запрос в первую очередь?</p>

<p>вот другой пример, который нельзя переписать без псевдонимов (не может <code>group by distinct</code>).</p><p>представьте себе таблицу с именем <code>purchases</code>, в которой записываются покупки, сделанные <code>customers</code> в <code>stores</code>, то есть это таблица "многие ко многим", и программное обеспечение должно знать, какие клиенты совершали покупки в более чем одном магазине:</p><pre><code>select distinct customer\_id, sum(1) from ( select distinct customer\_id, store\_id from purchases) group by customer\_id having 1 < sum(1); </code></pre><p>..сбой с ошибкой <code>every derived table must have its own alias</code>. чинить:</p><pre><code>select distinct customer\_id, sum(1) from ( select distinct customer\_id, store\_id from purchases) as custom group by customer\_id having 1 < sum(1); </code></pre><p>(обратите внимание на псевдоним <code>as custom</code>).</p>