2016-08-25 49 views
0

我有一个简单的两个表User,Customer的数据库。这两个都有一个小小的ID。 我跑这个命令sqlite3 max函数

select max(u.id,c.id) as maxthing from Users u join Customers c; 

我两个表中得到了几乎所有的ID。 我试着看最大的文件,但它剂量说我可以通过第二个参数。 有人可以解释这里发生了什么,当我将第二个参数传递给max()时会发生什么?

+1

实际的问题是您在这里要做的。 –

+0

*多参数max()函数返回带有最大值的参数* –

+0

这是文档中的[记录](http://www.sqlite.org/lang_corefunc.html#maxoreunc)。 –

回答

1

发生这种情况是因为您正在进行笛卡尔连接,因此每条记录都会连接到每条记录,因此得到的结果会相乘。您需要添加连接关系:

select max(u.id,c.id) as maxthing 
from Users u 
join Customers c 
    ON(u.ID = c.User_ID) 
+0

你是说我的原始SQL不正确,因为我缺少这个操作的ON条件,并且我得到的返回将总是以这种方式返回数据,因为我的SQL不正确? – MrClamps

+0

@MrClamps有两个问题:具有两个参数的'max()'不是一个聚合函数,并且你实际上并没有加入任何东西。你只问第一个。没有一个真正的目标,没有人可以建议更好的查询。 –