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

Mysql 通过查询编辑器对表进行排序并接收重复行,mysql,sql-server,sorting,Mysql,Sql Server,Sorting,整个晚上(对我们中的一些人来说是早上) 首先,我是SQL新手,你可以从以前的文章中看出这一点。我试着自学,这很难,但同时也很有趣和有意义 我正在摆弄我创建的现有表,并试图找出如何将两个表合并到一个查询中,首先按升序对一列进行排序,然后按字母顺序对另一列进行排序 My Customer表由4行和3列组成(Customer ID、Customer Name、CustomerAddressID),My second表由4行和5列组成(AddressID、Street、City、State、ZipCod

整个晚上(对我们中的一些人来说是早上)

首先,我是SQL新手,你可以从以前的文章中看出这一点。我试着自学,这很难,但同时也很有趣和有意义

我正在摆弄我创建的现有表,并试图找出如何将两个表合并到一个查询中,首先按升序对一列进行排序,然后按字母顺序对另一列进行排序

My Customer表由4行和3列组成(Customer ID、Customer Name、CustomerAddressID),My second表由4行和5列组成(AddressID、Street、City、State、ZipCode)

我尝试了一些方法来做到这一点,但我遇到了一些问题

SELECT [CustomerName],[Street],[City],[State],[ZipCode]
FROM Customer,Address
ORDER BY ZipCode ASC, CustomerName;
上面的代码将所有内容合并到一个结果中,这非常棒,但我最终得到了16行。前4行按字母顺序显示CustomerName,这正是我想要的。但是,其余的列都是重复的。我附上了两次尝试查询正确数据的截图

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

我已经受够了把脑袋撞在墙上想弄明白这件事。我已经查阅了几乎所有我能找到的指南,但我似乎无法让它发挥作用

任何指导都将不胜感激

谢谢,

杰森

编辑**(这是我原始的数据插入语句)

编辑2*

谢谢你的快速帮助。我玩了它,并把它弄明白了。现在效果很好:

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子句总是返回简洁的结果。

试试这个

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

我有一点。我尝试进行内部联接,但发现两个表中都没有匹配的列。之所以得到16行,是因为缺少联接条件
Customer.CustomerAddressID=Address.AddressID
。也始终使用ANSI标准联接。
的使用被贬低了。哎呀,先生/女士,你太棒了。只是从头开始重新编辑了我的查询,它完美地解决了所有问题。我添加了ZipCode ASC、CustomerName ASC的订单;在我询问的最后。它按升序提取邮政编码,但我的客户名称不完全符合顺序。我假设这是因为zipcodeorder请求优先?是的,没错。您的结果将在
ZipCode
中排序,对于具有相同
ZipCode
的行,这些行将在
CustomerName
上排序。非常好。很高兴我终于把一切都收拾好了。有时需要朝正确的方向轻推。谢谢。我做的基本上和你做的一样。我之前和Join在一起玩,但误解了描述。我认为我必须有一个匹配的列,并且不知道我可以将CustomerAddressID(外键)设置为AddressID(主键)。5小时前我就知道了……唉。非常感谢大家。该死的爱。
SELECT c.[CustomerName],a.[Street],a.[City],a.[State],a.[ZipCode]
FROM Customer c
INNER JOIN Address a ON a.AddressID = c.CustomerAddressID
ORDER BY a.ZipCode ASC, c.CustomerName;