簡體   English   中英

user_id的列名錯誤

[英]Ambiguous column name error for user_id

我的用戶表具有列user_idemail我的邀請表具有列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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM