2016-08-25 90 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()'不是一個聚合函數,並且你實際上並沒有加入任何東西。你只問第一個。沒有一個真正的目標,沒有人可以建議更好的查詢。 –