使用外键以有序格式返回名称的MySQL查询
我有一个与从两个表的组合中获取记录相关的查询,返回的结果将在外键的帮助下使用ORDERBY子句获取 我有两个名为users和orders的表 表格:用户使用外键以有序格式返回名称的MySQL查询,mysql,sql,Mysql,Sql,我有一个与从两个表的组合中获取记录相关的查询,返回的结果将在外键的帮助下使用ORDERBY子句获取 我有两个名为users和orders的表 表格:用户 id name 1 John 2 Doe 表格:订单 id user_id for 1 2 cake 2 1 shake 2 2 milk 在table:orders中,user\u id是表示table:users中id的外键 问题: user_id
id name
1 John
2 Doe
表格:订单
id user_id for
1 2 cake
2 1 shake
2 2 milk
在table:orders中,user\u id是表示table:users中id的外键
问题:
user_id for
2 cake
2 milk
1 shake
我想从table:orders中提取记录,但顺序应该基于用户名
期望的结果:
user_id for
2 cake
2 milk
1 shake
注意:此处显示的用户id为2,显示在用户id为1之前。这是因为名称Doe应显示在名称John之前,因为order by
我现在所做的:
user_id for
2 cake
2 milk
1 shake
我对MySQL连接一无所知。通过在互联网上搜索这件事,我没有找到一种方法来实现这件事。我已经写了一个查询,但它不会获取这样的记录,但不知道该怎么做才能使它完全像我想要的那样工作
SELECT * FROM orders ORDER BY user_id
它将根据用户id的顺序而不是名称来获取记录。您是对的,连接两个表是实现这一点的最简单方法,您还可以显示名称,因为您已经连接了它们 用户_id |用于 ------: | :---- 2 |蛋糕 2 |牛奶 1 |摇晃
dbfiddle您说得对,连接两个表是实现这一点的最简单方法,您还可以显示名称,因为您已经连接了它们 用户_id |用于 ------: | :---- 2 |蛋糕 2 |牛奶 1 |摇晃
dbfiddle您只需使用下面的查询,就可以通过join orders表和users表获得所需的结果
SELECT user_id, for FROM orders, users where user_id = id ORDER BY name;
使用where条件,我们匹配orders表中user\u id
等于users表中id
的对应行。通过对用户表中的name
列使用orderby
,行将按升序排序。在这里,订单表中的user\u id
和列将显示为最终结果
这里我没有使用users.id
或orders.user\u id
,因为它们的格式不同。如果对列使用相同的格式,则需要使用上述语法。只需使用下面的查询,就可以通过join orders表和users表获得所需的结果
SELECT user_id, for FROM orders, users where user_id = id ORDER BY name;
使用where条件,我们匹配orders表中user\u id
等于users表中id
的对应行。通过对用户表中的name
列使用orderby
,行将按升序排序。在这里,订单表中的user\u id
和列将显示为最终结果
这里我没有使用users.id
或orders.user\u id
,因为它们的格式不同。如果对列使用相同的格式,则需要使用上述语法。Perfect Sir。如果我想提取所有列,那么我必须写o。mysql不喜欢两个表中的名称相同,通常人们只发布部分if there表,因此我不知道表是否有两个名称,所以我选择save-side并命名表的别名,此外,这使更复杂的查询更易于阅读。好的,先生。谢谢,太好了,先生。如果我想提取所有列,那么我必须写o。mysql不喜欢两个表中的名称相同,通常人们只发布部分if there表,因此我不知道表是否有两个名称,所以我选择save-side并命名表的别名,此外,这使更复杂的查询更易于阅读。好的,先生。谢谢。逗号分隔的表不再使用了,它们是基本的交叉联接,以后必须过滤。谢谢@nbk我会研究一下。逗号分隔的表不再使用了,它们是基本的交叉联接,以后必须过滤。谢谢@nbk我会研究一下。