我有一個簡單的兩個表User,Customer的數據庫。這兩個都有一個小小的ID。 我跑這個命令sqlite3 max函數
select max(u.id,c.id) as maxthing from Users u join Customers c;
我兩個表中得到了幾乎所有的ID。 我試着看最大的文件,但它劑量說我可以通過第二個參數。 有人可以解釋這裏發生了什麼,當我將第二個參數傳遞給max()時會發生什麼?
我有一個簡單的兩個表User,Customer的數據庫。這兩個都有一個小小的ID。 我跑這個命令sqlite3 max函數
select max(u.id,c.id) as maxthing from Users u join Customers c;
我兩個表中得到了幾乎所有的ID。 我試着看最大的文件,但它劑量說我可以通過第二個參數。 有人可以解釋這裏發生了什麼,當我將第二個參數傳遞給max()時會發生什麼?
發生這種情況是因爲您正在進行笛卡爾連接,因此每條記錄都會連接到每條記錄,因此得到的結果會相乘。您需要添加連接關係:
select max(u.id,c.id) as maxthing
from Users u
join Customers c
ON(u.ID = c.User_ID)
你是說我的原始SQL不正確,因爲我缺少這個操作的ON條件,並且我得到的返回將總是以這種方式返回數據,因爲我的SQL不正確? – MrClamps
@MrClamps有兩個問題:具有兩個參數的'max()'不是一個聚合函數,並且你實際上並沒有加入任何東西。你只問第一個。沒有一個真正的目標,沒有人可以建議更好的查詢。 –
實際的問題是您在這裏要做的。 –
*多參數max()函數返回帶有最大值的參數* –
這是文檔中的[記錄](http://www.sqlite.org/lang_corefunc.html#maxoreunc)。 –