2013-05-17 2 views
0

У меня есть два запроса:выбора конкретных столбцов и * в то же MySQL Query

Array allIds = select id from table1 order by time

и

select * from table1 where id in (allIds[0],allIds[1],...,allIds[9])

Есть ли способ объединить эти запросы в одну? Мне нужны все данные из обоих запросов.

+0

Вы пробовали 'JOIN'? –

+0

LIMIT 11, если вы имеете в виду 11 первых результатов первого запроса? – sashkello

+0

ОК, чтобы уточнить. Первый запрос вернет 100 идентификаторов. Второй запрос вернет * из первых 10 идентификаторов. * - еще 10 столбцов. –

ответ

0

Я думаю, что это то, что вы ищете, если я пойму это правильно.

В основном, следующий запрос будет выбирать ВСЕ строки из второй таблицы, где они имеют одинаковые идентификаторы, такие как 10 самых последних строк из первого.

Это имеет смысл? Или я пропустил знак?

SELECT table.id, table2.* 
FROM table 
INNER LEFT JOIN table AS `table2` ON table.id IN (
    SELECT table.id 
    FROM table 
    ORDER BY table.time 
    LIMIT 0,10 
) 
+0

хорошо Theres только 1 стол. Но я не думаю, что это возвращает идентификаторы из 10-> 100 –

+0

Он должен возвращать все в базе данных для 10 самых последних идентификаторов. Вы ищете что-то другое, чем это? – DavidScherer

+0

Мне нужны все данные, возвращаемые двумя запросами. Таким образом, первый запрос возвращает все 100 идентификаторов. второй запрос возвращает все столбцы для первых 10 идентификаторов. –

0

Там же два способа сделать это:

Первый путь более или менее простая комбинация двух ваших запросов:

select * from table1 
where id in (
    select id 
    from table2) 
order by time 

Второй, и лучше, способ объединения :

select table1.id 
from table1 
join table2 on table1.id = table2.id 
order by time 
+0

есть только одна таблица. Я не думаю, что любой запрос возвращает то, что мне нужно.Ваш первый пример не вернет все 100 идентификаторов, а второй пример не вернет * из первых 10 идентификаторов. –

+0

Я не понимаю, зачем вам нужен подзапрос. Что вы пытаетесь сделать? – Bohemian

+0

Я пытаюсь получить 100 идентификаторов. Затем я пытаюсь получить все столбцы из первых 30 из этих 100 идентификаторов. –

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