从两个表中选择第一行

问题描述 投票:0回答:3

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

像这样?

SELECT * FROM Database.tableX 
limit 1, Database.tableY limit 1
mysql union
3个回答
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

2
投票

可能,如果表定义匹配:

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

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


2
投票

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

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

SELECT * FROM Database.tableX limit 1;

SELECT * FROM Database.tableY limit 1;

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

© www.soinside.com 2019 - 2024. All rights reserved.