2010-11-19 4 views
2

Я хочу получить 10 лучших записей из 2 таблиц, которые имеют id в качестве ссылочного идентификатора, используя один запрос.Извлечь 5 лучших записей из 2 таблиц, используя один запрос

Например, у меня есть student и Student_details столов.

Сейчас я хочу получить 5 записей из student таблица и топ 5 записей из Student_details таблица.

ответ

2

Хотите иметь результаты обеих таблиц, объединенных в 1 результирующем наборе?

Если да, то используйте

SELECT student.*, student_details.* 
FROM student, student_details 
WHERE student.id = student_details.student_id 
ORDER BY id ASC LIMIT 5; 
1
SELECT * FROM student ORDER BY id ASC LIMIT 5; 
SELECT * FROM student_details ORDER BY id ASC LIMIT 5; 
0
SELECT * FROM table WHERE ... ORDER BY ... DESC/ASC LIMIT 5; 

Делают это дважды.

+0

Спасибо, но я хочу в одном запросе –

0

Это невозможно! Вы можете создать временную таблицу и как-то попытаться сопоставить поля одной таблицы, чтобы они соответствовали полю другой, если оба они имеют почти одинаковое количество полей - только тогда вы могли бы использовать один запрос, чтобы получить 5 лучших результатов обоих таблицы с использованием одного запроса. Но даже тогда это приведет к более чем одному запросу (потому что вам сначала нужно создать временную таблицу).

Лучшее, что вы можете сделать, это использовать два запроса:

SELECT * FROM student ORDER BY student.id LIMIT 5; 
SELECT * FROM student_details ORDER BY student_details.id LIMIT 5; 
+0

я хочу топ 5 записей из таблицы студентов и топ 5 записей из Student_details таблицы с помощью одного запроса. –

+0

Это невозможно! я обновил сообщение – Thariama

Смежные вопросы