Подтвердить что ты не робот

Mysql выбирает различные

Я пытаюсь выбрать дублирующиеся строки в таблице mysql, он отлично работает для меня, но проблема в том, что он не позволяет мне выбирать все поля в этом запросе, просто позволяя мне выбрать имя поля, которое я использовал как отдельный, lemme написать запрос для лучшего понимания

mysql_query("SELECT DISTINCT ticket_id FROM temp_tickets ORDER BY ticket_id")

mysql_query("SELECT * , DISTINCT ticket_id FROM temp_tickets ORDER BY ticket_id")

1-й работает нормально

теперь, когда я пытаюсь выбрать все поля, я получаю ошибки

Я пытаюсь выбрать последний из дубликатов, скажем, ticket_id 127 3 раза в строке id 7,8,9, поэтому я хочу выбрать его один раз с последней записью, которая в этом случае будет 9, и это относится к все остальные элементы ticket_id

Любая идея спасибо

4b9b3361

Ответ 1

Вы ищете "SELECT * FROM temp_tickets GROUP BY ticket_id ORDER BY ticket_id?

ОБНОВЛЕНИЕ

SELECT t.* 
FROM 
(SELECT ticket_id, MAX(id) as id FROM temp_tickets GROUP BY ticket_id) a  
INNER JOIN temp_tickets t ON (t.id = a.id)

Ответ 2

DISTINCT не является функцией, которая применяется только к некоторым столбцам. Это модификатор запроса, который применяется ко всем столбцам в списке выбора.

То есть DISTINCT уменьшает строки только в том случае, если все столбцы идентичны столбцам другой строки.

DISTINCT должен следовать сразу после SELECT (наряду с другими модификаторами запросов, такими как SQL_CALC_FOUND_ROWS). Затем, следуя модификаторам запросов, вы можете указать столбцы.

  • ПРАВО: SELECT DISTINCT foo, ticket_id FROM table...

    Выведите строку для каждого отдельного сопряжения значений через ticket_id и foo.

  • НЕПРАВИЛЬНО: SELECT foo, DISTINCT ticket_id FROM table...

    Если есть три разных значения ticket_id, будет ли это возвращать только три строки? Что, если есть шесть различных значений foo? Какие три значения шести возможных значений foo должны быть выведены?
    Это двусмысленно, как написано.

Ответ 3

Вместо вы можете использовать группу. Потому что, когда вы используете разные, вы будете бороться за выбор всех значений из таблицы. В отличие от того, когда вы используете группу, вы можете получить различные значения, а также все поля в таблице.

Ответ 4

Вы можете так использовать

mysql_query ( "SELECT DISTINCT (ticket_id), column1, column2, column3 FROM temp_tickets ORDER BY ticket_id" )