Кажется, что вы используете MySQL, а не SQL Server, и пытаетесь эмулировать номера строк, как показано, например, in this duplicate question. Это тривиально делать в SQL Server, используя функцию ROW_NUMBER, как показано ответом @ Prdp.
MySQL, хотя он не имеет ранговых, аналитических или оконных функций, найденных в других базах данных. Такие функции можно эмулировать очень ограниченным образом, используя нестандартные трюки SQL, как показано в связанном вопросе.
Такие трюки очень ограничены. Типичное использование ROW_NUMBER
- ранжирование записей внутри группы, например, 10 крупнейших продавцов по регионам. Это невозможно сделать с помощью трюка @curRow := @curRow + 1
. Имеются также последствия для производительности. Этот трюк будет только работать, если строки обрабатываются последовательно.
В случае вопрос, в запрос MySQL, вероятно, выглядеть следующим образом:
SELECT l.ID,
l.title,
l.last_name,
l.first_name,
@curRow := @curRow + 1 AS row_number
FROM ( select ID,title,last_name,first_name
from local
UNION ALL
select ID,title ,last_name,first_name
from foreign
) l
JOIN (SELECT @curRow := 0) r
Хитрость здесь в том, что JOIN (SELECT @curRow := 0)
создает переменную @curRow
с начальным значением 0 и возвращает его значение. База данных будет принимать результаты запроса и для каждой строки, она увеличит переменную и вернет увеличенное значение. Это можно сделать только в конце и принудительно обрабатывать результаты.
Используя JOIN (SELECT @curRow :=0) r
, вы просто избегаете создания переменной в отдельном заявлении.
Это либо MySQL, либо SQL Server. Это совершенно разные продукты. О чём вы спрашиваете? SQL Server имеет ранжирующие функции, такие как 'ROW_NUMBER()'. У MySQL нет. MySQL не имеет большинства ранговых, оконных и аналитических функций, предлагаемых другими базами данных. –
Почему люди отмечают вопросы как с тегами MySQL, так и с SQL Server, когда явно хотят получить ответ только за один из них? –
Возможный дубликат [с MySQL, как я могу создать столбец, содержащий индекс записи в таблице?] (Http://stackoverflow.com/questions/3126972/with-mysql-how-can-i-generate-a- column-contains-the-record-index-in-a-table) –