У меня есть поле поиска, где поиск пользователя в этом случае «RG Transport». Сначала я хочу получить самые точные соответствия.Как я могу получить первую строчку, которая будет самой первой?
Это генерируется запрос:
SELECT DISTINCT department.bold_id,
departmentid + ' ' + organization.name + ' - '
+ department.name AS DisplayValue,
organization.name
FROM organization,
department
WHERE organization.bold_id = department.organization
AND Upper(searchkeysname) LIKE '%[[]%RG%]%'
AND Upper(searchkeysname) LIKE '%[[]%TRANSPORT%]%'
ORDER BY organization.name
«RG Transport AB» на строке 78. Поэтому я хочу, чтобы это было в первой строке. я тогда попробуйте союза
SELECT DISTINCT department.bold_id, departmentid + ' ' + organization.name + ' - ' + department.name AS DisplayValue,
organization.name FROM Department, Organization
WHERE organization.bold_id = department.organization
AND Upper(searchkeysname) LIKE '%[[]RG TRANSPORT%]%'
UNION ALL
SELECT DISTINCT department.bold_id,
departmentid + ' ' + organization.name + ' - '
+ department.name AS DisplayValue,
organization.name
FROM organization,
department
WHERE organization.bold_id = department.organization
AND Upper(searchkeysname) LIKE '%[[]%RG%]%'
AND Upper(searchkeysname) LIKE '%[[]%TRANSPORT%]%'
Он работает нормально, но следующие строки не сортируются по имени. Если добавить
ORDER BY organization.name
до последнего запроса первая строка теряется. Есть ли другой способ, который я могу сделать?
Ваш запрос с результатом объединения в 1 строку, точное соответствие RG Transport. Я определенно не хорошо разбираюсь в SQL, но где добавлен новый столбец? И нет, я не могу предположить, что всегда найдено прямое совпадение. –