Ответы пользователя по тегу MySQL
  • Как вывести все поля с максимальным совпадением значений полей?

    @IceJOKER Автор вопроса
    Web/Android developer
    Переделал запрос, чтоб он выводил еще и имена пользователей, а так же совпавшиеся данные, а как вывести в этом же запросе все данные(data), которые не совпали as NOEQ

    SELECT CONCAT(`t`.`user_id`, ' | ', `u1`.`name`) AS `user1`, CONCAT(`s`.`user_id`, ' | ', `u2`.`name`) AS `user2`, count(`s`.`user_id`) AS `num`, 
    GROUP_CONCAT(`t`.`data`) as EQ
      FROM `user_data` AS `t`
        JOIN `user_data` AS `s` ON (`t`.`data` = `s`.`data` AND `t`.`user_id` != `s`.`user_id`)
        JOIN `users` AS `u1` ON(`u1`.`id` = `t`.`user_id`)
        JOIN `users` AS `u2` ON(`u2`.`id` = `s`.`user_id`)
    where `t`.`user_id` = 7
      GROUP BY `user1`, `user2`
      ORDER BY `user1`, `num` DESC, `user2`


    Этот код все выводит нормально, осталось в этом же коде вывести и данные которые не совпали, отдельно можно было бы сделать так:

    SELECT CONCAT(`t`.`user_id`, ' | ', `u1`.`name`) AS `user1`, CONCAT(`s`.`user_id`, ' | ', `u2`.`name`) AS `user2`, count(`s`.`user_id`) AS `num`, 
    GROUP_CONCAT(`s`.`data`) as NEEQ
      FROM `user_data` AS `t`
        JOIN `user_data` AS `s` ON (`t`.`data` != `s`.`data` AND `t`.`user_id` != `s`.`user_id`)
        JOIN `users` AS `u1` ON(`u1`.`id` = `t`.`user_id`)
        JOIN `users` AS `u2` ON(`u2`.`id` = `s`.`user_id`)
    where `t`.`user_id` = 7
      GROUP BY `user1`, `user2`
      ORDER BY `user1`, `num` DESC, `user2`
    Ответ написан
    Комментировать