在内部联接(postgreSQL)中使用LIMIT语句

在内部联接(postgreSQL)中使用LIMIT语句,postgresql,inner-join,limit,Postgresql,Inner Join,Limit,我在使用LIMIT语句时遇到问题。我非常感谢你的帮助。 我试图将三个表内部连接起来,并使用LIMIT语句只查询几行,因为这些表太大了 所以,基本上,这就是我想要实现的目标: SELECT * FROM ((scheme1.table1 INNER JOIN scheme1.table2 ON scheme1.table1.column1 = scheme1.table2.column1 LIMIT 1) INNER JOIN scheme1.table3 ON scheme1.table1.co

我在使用LIMIT语句时遇到问题。我非常感谢你的帮助。 我试图将三个表内部连接起来,并使用LIMIT语句只查询几行,因为这些表太大了

所以,基本上,这就是我想要实现的目标:

SELECT *
FROM ((scheme1.table1
INNER JOIN scheme1.table2
ON scheme1.table1.column1 = scheme1.table2.column1 LIMIT 1)
INNER JOIN scheme1.table3
ON scheme1.table1.column1 = scheme1.table3.column1)
LIMIT 1;
我从第一个内部联接得到一个限制语法错误。为什么?如何限制从每个内部联接获得的结果。如果我只使用底部的第二个“LIMIT 1”,我将查询整个表


非常感谢

限制只能应用于查询,而不能应用于表引用。因此,您需要对表2使用完整的SELECT查询,以便能够使用LIMIT子句:

SELECT *
FROM schema1.table1 as t1
  INNER JOIN (
     select *
     from schema1.table2
     order by ???
     limit 1
  ) as t2 ON t1.column1 = t2.column1 
  INNER JOIN schema1.table3 as t3 on ON t1.column1 = t3.column1
order by ???
limit 1;


请注意,
LIMIT
没有
orderby
通常没有意义,因为查询结果没有固有的排序顺序。您应该考虑在派生表(又称子查询)和外部查询中应用必要的
orderby
,以获得一致和确定的结果。

在没有
orderby
的情况下使用
LIMIT
是毫无意义的。您应该在问题中添加示例数据。您的“子查询”不包含
SELECT
…因此这不是子查询,而是不允许限制的表表达式。使用完整的子查询-它将工作。非常感谢。我马上就去试试,然后回来汇报!我真的很感谢你的帮助!成功了!