我使用 MYSQL 创建了两个表,tblorder 和 tblitem。
CREATE TABLE `tblorder` (
`orderId` int NOT NULL,
`orderName` varchar(45) NOT NULL,
PRIMARY KEY (`orderId`)
CREATE TABLE `tblitem` (
`itemId` int NOT NULL,
`itemName` varchar(45) NOT NULL,
`itemUnit` varchar(5) NOT NULL,
`itemRate` double NOT NULL,
`orderRef` int NOT NULL,
PRIMARY KEY (`itemId`),
KEY `fk1_idx` (`orderRef`),
CONSTRAINT `fk1` FOREIGN KEY (`orderRef`) REFERENCES `tblorder` (`orderId`)
我尝试使用下面的查询加入这两个表
SELECT orderId,orderName, itemName, itemUnit,itemRate
FROM tblitem
INNER JOIN tblorder on tblorder.orderId = tblitem.orderRef
现在结果显示像 Image-01
如何删除结果表中 orderId 、OrderName 列中的重复值?感谢帮助我解决这个问题。
加入表格后是否可以获得如下输出?
新查询的输出
在应用程序端执行此“重复数据删除”。使用 PHP 或 JS 清理重复值会容易得多。可以通过 UDV 制作您想要的东西,但 SQL 不是为此而设计的。
同意有关在应用程序端处理此问题的其他评论,因为您正在寻找的更多是表示逻辑,但这也应该从数据库端完成:
这通过在每组行中生成唯一 ID(使用
ROW_NUMBER()
窗口函数)来工作,按(这是您请求的结果显示的)orderId
的顺序升序,我称之为. 然后,您可以检查当前行是否是该订单的第一项,然后显示完整的行详细信息,否则每个订单的第一项之后的任何内容都会将and空白。itemId
sortId
sortId
orderId
orderName
顺便说一句,为了便于阅读,我通常更喜欢将每个子查询放入自己的 CTE 中,但不确定您使用的是哪个版本的 MySQL 以及它是否支持 CTE,所以暂时使用子查询。