У меня есть эта таблица «слова» с дополнительной информацией:SQL - Выберите отчетливый на две колонки
+---------+------------+-----------
| ID |ID_CATEGORY | ID_THEME |
+---------+------------+-----------
| 1 | 1 | 1
| 2 | 1 | 1
| 3 | 1 | 1
| 4 | 1 | 2
| 5 | 1 | 2
| 6 | 1 | 2
| 7 | 2 | 3
| 8 | 2 | 3
| 9 | 2 | 3
| 10 | 2 | 4
| 11 | 2 | 4
| 12 | 3 | 5
| 13 | 3 | 5
| 14 | 3 | 6
| 15 | 3 | 6
| 16 | 3 | 6
И этот запрос, который дает мне 3 случайных идентификаторами из разных категорий, но не из разных тем тоже:
SELECT Id
FROM words
GROUP BY Id_Category, Id_Theme
ORDER BY RAND()
LIMIT 3
То, что я хочу, как результат:
+---------+------------+-----------
| ID |ID_CATEGORY | ID_THEME |
+---------+------------+-----------
| 2 | 1 | 1
| 7 | 2 | 3
| 14 | 3 | 6
То есть, не повторить ни одна категории или темы.
Попробуйте использовать GROUP BY следующим образом: http://stackoverflow.com/a/54430/2717958 – Michal
Общее правило GROUP BY гласит: «Если указано предложение GROUP BY, каждая ссылка столбца в списке SELECT должна либо идентифицировать столбец группировки, либо быть аргументом функции набора ». Столбец id не следует этому. – jarlh
в первой строке -> 2 1 1 или 1 1 1 .... @ismaestro –