mysql - 通过查询编辑器对表进行排序并接收重复行

标签 mysql sql-server sorting

所有的晚上(我们中的一些人早上),

首先,我是 SQL 的新手,您可以从以前的帖子中看出这一点。我正在尝试自学,这很困难,但同时又有趣又有益。

我正在弄乱我创建的现有表,我想弄清楚如何将两个表组合成一个查询,首先按升序对一列进行排序,然后按字母顺序对另一列进行排序。

我的客户表包含 4 行、3 列(客户 ID、客户名称、客户地址 ID),我的第二个表地址包含 4 行和 5 列(地址 ID、街道、城市、州、邮政编码)

我已经尝试了几种方法来做到这一点,但我遇到了一些问题。

SELECT [CustomerName],[Street],[City],[State],[ZipCode]
FROM Customer,Address
ORDER BY ZipCode ASC, CustomerName;

上面的代码将所有内容组合成一个结果,这太棒了,但我最终得到了 16 行。前 4 行按字母顺序显示 CustomerName,这正是我想要的。然而,其余列都是重复的。我附上了我两次尝试查询正确数据的屏幕截图。 This screenshot is the two attempts I have been messing with trying to get this to work

请注意,我将主键设置为 AddressID、CustomerID 并将外键设置为 CustomerAddressID。我不确定这些是否需要包含在我的查询中以帮助对信息进行排序。

为了解决这个问题,我已经受够了用头撞墙。我已经查阅了几乎所有我能找到的指南,但我似乎无法让它发挥作用。

如有任何指导,我们将不胜感激。

谢谢,

杰森

编辑**(这是我对数据的原始 INSERT 语句)

INSERT INTO [dbo].[Address]
       ([AddressID]
       ,[Street]
       ,[City]
       ,[State]
       ,[ZipCode])
VALUES
       (1,'2400 Broadway','New York','NY',11201),
       (2,'320 21st Street','Atlanta','GA',30322),
       (3,'439 Skyline Blvd','Seattle','WA',98101),
       (4,'56 Park Avenue','Dallas','TX',75201);
GO

INSERT INTO [dbo].[Customer]
       ([CustomerID]
       ,[CustomerName]
       ,[CustomerAddressID])
VALUES
       (1,'Western Supply Co.',2),
       (2,'Jake Harper',4),
       (3,'Elizabeth Harper',1),
       (4,'Abacus Consulting',3);
GO

编辑 2*

感谢 Ughai 的快速帮助。我玩了它并弄明白了。现在完美运行:

SELECT Customer.CustomerName, Address.Street, Address.City, Address.State, Address.ZipCode
FROM Customer
INNER JOIN Address
ON Customer.CustomerAddressID=Address.AddressID
ORDER BY ZipCode ASC, CustomerName ASC;

最佳答案

您编写了一个仅执行交叉连接的查询。 尝试以下查询以获得正确的结果。

SELECT C.CustomerName, A.Street, A.City, A.State, A.ZipCpde 
FROM Customer C 
INNER JOIN Address A 
ON C.CustomerAddressID = A.AddressID 
ORDER BY A.ZipCode ASC, C.CustomerNAme;

当您想从两个或多个表中获取结果时,您总是使用 JOIN。 JOIN 子句总是返回简洁的结果。

关于mysql - 通过查询编辑器对表进行排序并接收重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30497353/

相关文章:

javascript - 如何在 Javascript 数组中查找单词?

mysql - 按表中出现的次数排序

mysql - 在 if 子句中使用平均聚合函数

PHP/MySQL 特定的列数

mysql - 更新专用于特定订单的列

mysql - MySQL 和 SQL 的 .sql 文件是否不同?

SQL Filter 日期范围查询

mysql - 设计与表 A、表 B 或表 A​​ 和 B 相关的 SQL 表的最佳实践是什么?

sql-server - dacpac可以用来管理大数据量的数据库吗?

java - 使用 Guava 从 TreeMap 中提取最后一个 x 值