#mysql #sql
Вопрос:
У меня есть следующий запрос в mysql:
SELECT DISTINCT re1.name as name1, re2.name as name2
FROM Rating ra1 JOIN Reviewer re1
ON re1.rID = ra1.rID
CROSS JOIN
Reviewer re2 JOIN Rating ra2 ON re2.rID = ra2.rID
WHERE ra1.mID = ra2.mID
AND re1.rID != re2.rID
AND re1.rID > re2.rID
ORDER BY name1, name2;
Это полученные данные:
Как я могу упорядочить полученные строки в алфавитном порядке? (т. е. во втором ряду, чтобы переключить позицию Бриттани и Криса)
Спасибо
Комментарии:
1. Это не упорядочение строк, это упорядочение столбцов.
2. Тебе это не нужно
AND re1.rID != re2.rID
. Еслиre1.rID
больше , чемre2.rID
, они не могут быть равны.3. Что должно произойти с дубликатом
Chris Jackson
в столбце name2 ? Это желаемый результат ?
Ответ №1:
Используйте функции LEAST()
и GREATEST()
:
SELECT DISTINCT
LEAST(re1.name, re2.name) AS name1,
GREATEST(re1.name, re2.name) AS name2
FROM ...
Комментарии:
1. Спасибо, это сработало! есть ли способ сделать это в среде sqlite? без НАИМЕНЬШЕГО/НАИБОЛЬШЕГО
2. @goldenfish вместо НАИМЕНЬШЕГО() и НАИБОЛЬШЕГО() используйте скалярные функции MIN() и MAX ().