从两个表中选择第一行

时间:2012-11-03 07:45:07

标签: mysql union

我知道MySQL没有用于选择第一行的TOP 1功能。所以我使用限制1来做到这一点。但是如何同时从两个表(tableX,tableY)中选择第一行。

像这样?

SELECT * FROM Database.tableX 
limit 1, Database.tableY limit 1

3 个答案:

答案 0 :(得分:2)

除非两行之间存在某种关系,否则这是不可能的。 这里的其他答案尝试连接两行,但它们不保证它是每个表中的第一行。他们还假设有一个可以从两个表中匹配的字段。

我最好的建议是做两个查询:

SELECT * FROM Database.tableX limit 1;

SELECT * FROM Database.tableY limit 1;

编辑:您还应该添加一个ORDER BY来告诉MySQL如何对行进行排序。

答案 1 :(得分:2)

可能,如果表定义匹配:

SELECT * FROM Database.tableX LIMIT 1 
UNION ALL
(
 SELECT * FROM Database.tableY LIMIT 1
)

请注意内支架是必要的。否则,优化器会将结果集限制为1,看到最后一个LIMIT 1子句

答案 2 :(得分:0)

就是这样:

SELECT *
FROM Database.TableX, Database.TableY
LIMIT 1

或者也许这个?

SELECT *
FROM
  (SELECT * FROM Database.TableX LIMIT 1) t1,
  (SELECT * FROM Database.TableY LIMIT 1) t2