Сортировать по: Inner Join
Я помещаю внутреннее соединение в свой запрос. У меня есть результат, но я не знаю, как данные поступают в output.Can, кто-нибудь скажет мне, как соединение Inner совпадает с данными. Ниже я показываю изображение. Есть две таблицы (одна или две таблицы).
![alt text]()
По словам меня, что первая строка должна быть Mohit, но выход отличается. Пожалуйста, скажите мне.
Спасибо заранее.
Ответы
Ответ 1
Вы должны отсортировать его, если хотите, чтобы данные возвращались определенным образом. Когда вы говорите, что вы ожидаете, что "Mohit
" будет первой строкой, я предполагаю, что вы говорите, что, поскольку "Mohit
" является первой строкой в таблице [One]
. Однако, когда SQL Server присоединяется к таблицам, он не обязательно объединяется в том порядке, в котором вы думаете.
Если вы хотите, чтобы первая строка из [One]
была возвращена, попробуйте выполнить сортировку [One].[ID]
. Кроме того, вы можете order by
любой другой столбец.
Ответ 2
В SQL
порядок вывода не определен, если вы не укажете его в предложении ORDER BY
.
Попробуйте следующее:
SELECT *
FROM one
JOIN two
ON one.one_name = two.one_name
ORDER BY
one.id
Ответ 3
Избегайте SELECT *
в основном запросе.
Избегайте повторяющихся столбцов: условие JOIN
гарантирует, что One.One_Name
и two.One_Name
будут равны, поэтому вам не нужно возвращать оба в предложении SELECT
.
Избегайте дублировать имена столбцов: rename One.ID
и Two.ID
с помощью 'aliases'.
Добавьте предложение ORDER BY
, используя имена столбцов ('alises', где это применимо) из предложения SELECT
.
Предлагается переписать:
SELECT T1.ID AS One_ID, T1.One_Name,
T2.ID AS Two_ID, T2.Two_name
FROM One AS T1
INNER JOIN two AS T2
ON T1.One_Name = T2.One_Name
ORDER
BY One_ID;
Ответ 4
Добавьте ORDER BY ONE.ID ASC
в конце вашего первого запроса.
По умолчанию нет упорядочивания.
Ответ 5
SQL не возвращает никаких заказов по умолчанию, потому что это быстрее. Сначала вам не нужно просматривать ваши данные, а затем решать, что делать.
Вам нужно добавить опцию order by и, вероятно, указать, с какого идентификатора вы ожидаете. (Там есть дубликат имен, поэтому я предполагаю, что вы хотите One.ID)
select * From one
inner join two
ON one.one_name = two.one_name
ORDER BY one.ID
Ответ 6
Да, Mohit smirkingman прав. Даже если вы используете предложение Order by без указания порядка, поскольку assassending или dessending огромная база данных дает вам непредсказуемые ansewers