[英]Ambiguous column name error for user_id
我的用戶表具有列user_id
, email
我的邀請表具有列invite_id
request_id
user_id
sent_time
當我運行以下查詢時,我將兩個表合並為1,這是預期的。
'SELECT * FROM users INNER JOIN invites ON users.user_id = invites.user_id'
但是,當我運行以下查詢時,
'SELECT user_id FROM users INNER JOIN invites ON users.user_id = invites.user_id'
我收到以下錯誤
OperationalError: (sqlite3.OperationalError) ambiguous column name: user_id [SQL: 'SELECT user_id FROM users INNER JOIN invites ON users.user_id = invites.user_id']
任何幫助表示贊賞。
我認為信息很明確。 SQLite不知道表user_id
來自何處。
一種簡單的解決方案是使用表別名來限定列名:
SELECT u.user_id
FROM users u INNER JOIN
invites i
ON u.user_id = i.user_id;
另一種方法是使用USING
而不是ON
:
SELECT user_id
FROM users u INNER JOIN
invites i
USING (user_id);
您需要使用表名來限定列名,如下所示,因為參與查詢的兩個表都具有相同的列名
SELECT `users`.user_id
FROM users
INNER JOIN invites ON `users`.user_id = invites.user_id
這意味着你必須是具體哪些 user_id
要顯示的列。 即使他們加入,也不能保證他們是相同的。 某些類型的聯接在匹配的一側允許使用NULL
值(例如LEFT JOIN
),因此您需要詢問一個特定的值:
SELECT users.user_id FROM users INNER JOIN invites ON users.user_id = invites.user_id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.