在同一个mysql查询中选择特定列和*

时间:2013-05-17 00:51:55

标签: mysql optimization

我有两个问题:

Array allIds = select id from table1 order by time

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

有没有办法将这些查询合并为一个?我需要来自两个查询的所有数据。

2 个答案:

答案 0 :(得分:0)

如果我理解这一点,我认为这就是你要找的。

基本上,以下查询将从第二个表中选择所有行,它们与第一个行中的10个最新行具有相同的ID。

这有意义吗?或者我错过了标记?

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
)

答案 1 :(得分: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