2017-02-10 94 views
0

數據重複我有2個表:
USER: id, access_token QUERIES: id, query, user_id,user_id是一個外鍵
如何使一個選擇請求,以在未來的格式返回數據:
{user_id: {[queries for this user], access_token}, ...}mysql如何避免選擇請求

查詢

SELECT USERS.id, 
     USERS.access_token, 
     QUERIES.query 
FROM USERS 
INNER JOIN QUERIES ON USERS.id=QUERIES.user_id; 

,我有users.id和users.access_token的複製。我試圖用GROUP BY來得到答案,但在我的示例中,group by沒有幫助

謝謝。

+0

你嘗試過什麼嗎?如果是,則發佈查詢。 –

+0

LEFT JOIN並使用別名進行查詢,這是最後一次幫助識別 –

+0

這僅僅是一個例子。它取決於你真正想要的: $ sql =「SELECT USER.id,USER.access_token,QUERIES.id,QUERIES.query,QUERIES.user_id FROM USER INNER JOIN QUERIES ON USER.id = QUERIES.id」; – fizzi

回答

1

這就是SQL的工作原理。如果您想在一個查詢中從兩個表中進行選擇,那麼您將獲得用戶表中列的重複數據。

SQL只能爲每行返回具有相同列的結果集。所以它必須把東西放在那裏。

處理此問題的最常見方法是循環數據,如果user_id與前一行相同,則不會將其輸出到用戶。

+0

似乎你是對的。我也嘗試了'SELECT users.id,users.access_token,(SELECT查詢FROM查詢WHERE queries.user_id = users.id)FROM用戶;'但是得到 '錯誤1242(21000):子查詢返回多於1行' – rocknow