привета Возникают студент данные я хочу, чтобы отобразить только первые вопросы соответствующих кандидатов от каждой секции ...отображающие вопросы
ответ
Решение имитирует функцию SQL SERVER Row_Number(). Google mysql по порядку по пунктам в правильном направлении.
/*create temporary table t(can_id int, status varchar(20));
insert into t values
(001 , 'section 1 question 1'),
(001 , 'section 1 question 2'),
(001 , 'section 1 question 3'),
(001 , 'section 1 question 4'),
(001 , 'section 2 question 1'),
(001 , 'section 2 question 2'),
(001 , 'section 2 question 3'),
(001 , 'section 2 question 4'),
(001 , 'section 3 question 1'),
(001 , 'section 3 question 2'),
(001 , 'section 3 question 3'),
(002 , 'section 1 question 1'),
(002 , 'section 1 question 2'),
(002 , 'section 1 question 3'),
(002 , 'section 2 question 1'),
(002 , 'section 2 question 2'),
(002 , 'section 2 question 3'),
(002 , 'section 3 question 1'),
(002 , 'section 3 question 2'),
(002 , 'section 3 question 3'),
(002 , 'section 3 question 4');
*/
select s.tcanid as 'can.id', substring(s.tstatus,11,11) as Question
from
(
select t.can_id as tcanid, t.status as tstatus ,
@sno :=if(@previd = concat(t.can_id,substring(t.status,1,9)),@sno + 1,1) as canid
,@previd:=concat(t.can_id,substring(t.status,1,9)) prevcanid
from t,
(select @sno:= 0) as sn
,(select @Previd:= '') as p
) s
where s.canid <= 3
Ваш запрос не совсем такой же, как у меня - попробуйте вернуть aliass и исправьте оператор where, который он должен смотреть на псевдоним для sno –
По вашему требованию вы хотите первый 3 вопроса для каждого раздела, но вы не рассматривающий раздел в вашем запросе. Следующий запрос выполнит эту работу.
SELECT data_set.*
FROM
(
SELECT temp.can_id
, temp.Section
, temp.Question
, ROW_NUMBER() OVER (PARTITION BY temp.can_id,temp.Section ORDER BY temp.can.id,temp.Section) as QUESTION_NO
FROM
(
SELECT can.id as can_id
, SUBSTRING(status,11,11) as Question
, SUBSTRING(status,1,9) as Section
FROM samp_dat
) temp
) data_set
WHERE
data_set.QUESTION_NO <=3
Mysql не имеет функции ROW_NUMBER() - правда. –
- 1. Вопросы, отображающие динамически обновленное значение входного HTML
- 2. java applet вопросы, отображающие полученную информацию
- 3. Возникли вопросы, отображающие таймер обратного отсчета на моем сайте
- 4. NSTableView не отображающие данные
- 5. DataTable TableTools не отображающие
- 6. Не все компоненты, отображающие
- 7. Ячейки, отображающие неправильное содержимое
- 8. Модули Geb, отображающие ошибку
- 9. Флажки, не отображающие браузер
- 10. RecyclerView не отображающие данные
- 11. DataList не отображающие данные
- 12. GMaps, отображающие маркеры
- 13. json_encode: значения, отображающие нуль
- 14. проблемы, отображающие содержание
- 15. Странные символы, отображающие содержимое
- 16. HTML изображения не отображающие
- 17. бутстраповские иконки не отображающие
- 18. Элементы ListBox, не отображающие
- 19. @ Html.DisplayFor не отображающие данные
- 20. Текстуры, отображающие NGON?
- 21. и отображающие ошибки
- 22. Кнопки, не отображающие изображения
- 23. отображающие точные результаты
- 24. Недопустимые символы, не отображающие
- 25. MediaWiki - таблицы, не отображающие
- 26. Объекты спящего режима, отображающие
- 27. Спрайты, не отображающие
- 28. Отображающие бары с флотом
- 29. загруженные документы не отображающие
- 30. отображающие блочные элементы инлайн
Можете ли вы показать нам результат вашего запроса, по крайней мере, топ-10 – KaeL
Я не буду отвечать на этот вопрос, потому что усилия, необходимые для управления 'status' столбец, используя строковые функции значительно превышает усилия, которые вы бы для нормализации вашей таблицы, а номера разделов и идентификаторов вопросов - как отдельные столбцы. –
Ваши попытки 'SUBSTRING()' не будут работать, потому что ширина числа является переменной. Вам нужно будет использовать комбинацию 'INSTR' и' SUBSTRING', и это будет очень уродливо. –