内部连接上的重复记录

dzhpxtsq  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(290)

我正在迁移一个将数据从mysql数据库拉到sql数据库的项目。问题是我遇到了重复的记录,当我使用mysql数据库时,我能够快速解决这些记录。另一方面,sql给我带来了问题。
我有两个表:allorderdata和callsettings
这两个表都有一列标记为ordernumber。有时两个表上都有多条具有相同订单号的记录。在这种情况下,我只需要显示一条记录。
这就是我现在所拥有的:

  1. $dt = $_GET ["dt"];
  2. $sql = "SELECT
  3. A.OrderNumber,
  4. A.DetailShipDate,
  5. A.ETC,
  6. C.OrderNumber,
  7. C.ETC
  8. FROM AllOrderData A
  9. INNER JOIN CallSettings C ON A.OrderNumber = C.OrderNumber
  10. WHERE A.DetailShipDate = '$dt'";

我试图添加distinct和group by,但我读到它们被用于distinct行,只是不起作用。
当我使用mysql时,我把所有的数据都放在一个表中。不幸的是,这不再是一个选项,但查询非常简单:

  1. $sql_string = "SELECT * FROM orders WHERE DetailShipDate='$dt' group by Order_Number

我尝试了以下方法:

  1. $sql = "SELECT x.OrderNumber,
  2. x.EnteredBy,
  3. x.Order_Number,
  4. x.Contact_Name
  5. FROM (SELECT A.OrderNumber,
  6. A.EnteredBy,
  7. C.Order_Number,
  8. C.Contact_Name
  9. row_number() OVER (PARTITION BY A.OrderNumber
  10. ORDER BY C.Order_Number) rn
  11. FROM AllOrderData A
  12. INNER JOIN CallSettings C
  13. ON A.OrderNumber = C.Order_Number
  14. WHERE A.DetailShipDate = '$dt') x
  15. WHERE x.rn = 1;";

出现了这个错误:
查询准备/执行出错。数组([0]=>数组([0]=>42000[sqlstate]=>42000[1]=>102[code]=>102[2]=>[microsoft][sql server native client 11.0][sql server]靠近“(”的语法不正确[message]=>[microsoft][sql server native client 11.0][sql server]靠近“(”)的语法不正确

rkkpypqq

rkkpypqq1#

你可以用 row_number() . 按订单号进行分区和排序。

  1. SELECT x.ordernumber,
  2. x.detailshipdate,
  3. x.etc,
  4. x.ordernumber,
  5. x.etc
  6. FROM (SELECT a.ordernumber,
  7. a.detailshipdate,
  8. a.etc,
  9. c.ordernumber,
  10. c.etc,
  11. row_number() OVER (PARTITION BY c.ordernumber
  12. ORDER BY c.ordernumber) rn
  13. FROM allorderdata a
  14. INNER JOIN callsettings c
  15. ON a.ordernumber = c.ordernumber
  16. WHERE a.detailshipdate = ?) x
  17. WHERE x.rn = 1;
展开查看全部

相关问题