0

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

像这样?

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

3 回答 3

2

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

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

SELECT * FROM Database.tableX limit 1;

SELECT * FROM Database.tableY limit 1;

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

于 2012-11-03T08:49:42.203 回答
2

可能,如果表定义匹配:

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

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

于 2012-11-03T08:59:49.213 回答
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
于 2012-11-03T08:56:01.167 回答