Сортировать по: 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