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

0

Я хочу сортировать одного пользователя из таблицы, у которого никогда не было заметки, отличной от 0, а затем обновить запись, а затем вставить новую строку

  user  note
  12      1
  23      0
  88      0
  45      0
  12      0
  23      0
  12      0
  88      2

сортировать пользователя, кроме пользователя 12 и пользователя 88, потому что у них уже есть заметка где-то где-то вроде

SELECT * FROM table WHERE note=0 ORDER BY rand() LIMIT 1

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

  user  note
  12      1
  23      0
  88      0
  45      0
  12      0
  23      X    <--- mark the random user choosen
  12      0
  88      2
  23      0    <--- add a new line

в следующем случайном выбрать только число 45 будет доступно, потому что у другого пользователя есть что-то примечание! = 0

для этого последнего запроса я должен сделать 2 запроса UPDATE, затем INSERT или я могу сделать только один запрос?

Теги:

2 ответа

1
Лучший ответ

Вы можете избежать подзапросов для повышения производительности и выполните следующие действия:

SELECT * 
FROM YourTable 
GROUP BY name 
HAVING SUM(note)=0 ORDER BY rand() LIMIT 1;

Вот ДЕМОГРАФИЯ SQL Fiddle.

  • 0
    не работает хорошо, я пытаюсь несколько раз, и он подхватывает 88, мне нужно избегать, чтобы понять, что это работает: SELECT * FROM YourTable GROUP BY name HUMING SUM (note) = 0 ORDER BY rand () LIMIT 1;
  • 0
    Почему ты не хочешь этого? Сбор производится в случайном порядке!
Показать ещё 1 комментарий
1

Вы можете использовать вложенный выбор:

SELECT * FROM table WHERE note=0 and user not in (select user from table where note>0) ORDER BY rand() LIMIT 1

однако u действительно должен использовать первичный уникальный индекс для пользователей

  • 0
    TNX работает! если у меня есть огромный стол, он тоже работает? об индексе у меня есть идентификатор, об уникальном я могу установить его, потому что мне нужна таблица с каждым пользователем может установить много записей.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню