Я сталкивался с некоторыми похожими вопросами, но я все еще не совсем понимаю.
У меня есть база данных MySQL с таблицей, в которой я храню данные о людях и уникальные коды. Базовым блоком для меня является адрес электронной почты. Я хочу выбрать случайные записи, но ограничить их, чтобы определенный столбец электронной почты можно было выбрать только один раз. Это моя структура таблицы (я оставляю некоторые столбцы, которые не имеют отношения к этому вопросу).
+-----+-------------------+---------+----------+----------+
| ID | email | name | lastname | code |
+-----+-------------------+---------+----------+----------+
| 1 | mail@gmail.com | Simon | Hardy | 123ABC |
| 2 | john@yahoo.com | John | Doe | EEEEEE |
| 3 | john@yahoo.com | John | Doe | AEAEAE |
| 4 | xyz@bing.com | Bill | Liebe | 5D78AC |
| 5 | ellen@gmail.com | Ellen | Petete | 99AQE5 |
| 6 | john@yahoo.com | John | Doe | 000CVV |
| 7 | peter@gmail.com | Peter | Lorem | 54ACSS |
| 8 | emma@gmail.com | Emma | Stone | 98WW7Q |
+-----+-------------------+---------+----------+----------+
Если я ограничу свой выбор 3-мя строками и каким-то образом будет выбран ряд с email = john@yahoo.com, мне нужно пропустить / пропустить две другие строки с этим электронным письмом. Это мой запрос сейчас:
SELECT * FROM people ORDER BY RAND() LIMIT 3
PS: я знаю, что "ORDER BY RAND ()" медленный, я просто еще не фокусировался на этой части.
Я думал о GROUP BY, но, насколько я понимаю, таким образом я получу только один столбец, мне нужно получить их все.
Есть ли прямое решение для этого в MySQL?