2017-02-10 92 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