SELECT p1.last_name, p1.first_name, p1.city, p1.state
FROM president AS p1 INNER JOIN president AS p2
ON p1.city = p2.city AND p1.state = p2.state
WHERE (p1.last_name <> p2.last_name OR p1.first_name <> p2.first_name)
ORDER BY state, city, last_name;
Поскольку сценарий говорит, что он должен отображать разные значения имен, имеющих одинаковые города и состояния. Тогда те же имена или фамилии из p1 и p2 будут игнорироваться.Mysql self join производит дубликаты записей
Однако я получаю это на выходе.
last_name first_name City State
--------------------------------------------
'Adams', 'John Quincy', 'Braintree', 'MA'
'Adams', 'John', 'Braintree', 'MA'
'Obama', 'Barack', 'New York', 'NY'
'Roosevelt', 'Theodore', 'New York', 'NY'
'Bush', 'George', 'Westmoreland', 'VA'
'Bush', 'George', 'Westmoreland', 'VA'
'Monroe', 'James', 'Westmoreland', 'VA'
'Monroe', 'James', 'Westmoreland', 'VA'
'Washington', 'George', 'Westmoreland', 'VA'
'Washington', 'George', 'Westmoreland', 'VA'
В нем представлены две ценности Джорджа Буша, Джеймса Монро и Джорджа Вашингтона. Я проверил свою базу данных, и я уверен, что нет других повторяющихся значений этих имен.
Давай. Ваш стол достаточно мал, чтобы вы могли просто опубликовать все это, верно? – Strawberry
Конечно, это так. Ваш запрос не делает то, что вы описываете. Из объединения вы получите трех парней из Westmoreland, VA. Для Буша он находит две записи с другим именем (Монро и Вашингтон), поэтому дважды отображает Буша. То же самое для двух других. Если вы найдете 4 президента из одного и того же государства, они появятся три раза каждый. – oerkelens
Хорошо спасибо, теперь я получаю, как работают самоподготовки –