首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用distinct后获取重复项

使用distinct后获取重复项
EN

Stack Overflow用户
提问于 2013-06-26 21:48:56
回答 2查看 108关注 0票数 0

我有三个表,一个是映射tale,我使用distinct关键字,尽管得到了重复的值

代码语言:javascript
复制
SELECT
  mer.store_name,      mpr.`merchant_code` ,    mpr.`terminal_num` ,
  mpr.`rec_fmt` ,      mpr.`bat_nbr` ,          mpr.`Card_Type` ,
  mpr.`card_num` ,     mpr.`transaction_date` , mpr.`settle_date` ,
  mpr.`approval_code`, mpr.`intnl_amt` ,        mpr.`domestic_amt` ,
  mpr.`transid` ,      mpr.`upvalue` ,          mpr.`merchant_trackid` ,
  mpr.`MSF` ,          mpr.`service_tax` ,      mpr.`edu_cess` ,
  mpr.`net_amount` ,   mpr.`debit_credit_type`, mpr.`UDF1` ,
  mpr.`UDF2` ,         mpr.`UDF3` ,             mpr.`UDF4` ,
  mpr.`UDF5` ,         mpr.`seq_num` ,          mpr.`arn_no`
FROM
  `mpr_reports` mpr, merchantreports mer, storename_tid sid
WHERE (
  mer.Store_Name = sid.Store_Name
  AND sid.terminal_num = mpr.terminal_num
  AND mpr.`rec_fmt` = 'cvd'
  OR mpr.`rec_fmt` = 'bat'
)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-26 22:12:13

考虑将已发布的查询修改为如下所示...

代码语言:javascript
复制
SELECT mer.store_name
     , mpr.merchant_code 
     , mpr.terminal_num 
     , mpr.rec_fmt 
     , mpr.bat_nbr 
     , mpr.Card_Type 
     , mpr.card_num 
     , mpr.transaction_date 
     , mpr.settle_date 
     , mpr.approval_code 
     , mpr.intnl_amt 
     , mpr.domestic_amt 
     , mpr.transid 
     , mpr.upvalue 
     , mpr.merchant_trackid 
     , mpr.MSF 
     , mpr.service_tax 
     , mpr.edu_cess 
     , mpr.net_amount 
     , mpr.debit_credit_type 
     , mpr.UDF1 
     , mpr.UDF2 
     , mpr.UDF3 
     , mpr.UDF4 
     , mpr.UDF5 
     , mpr.seq_num 
     , mpr.arn_no
  FROM mpr_reports mpr
  JOIN storename_tid sid
    ON sid.terminal_num = mpr.terminal_num
  JOIN merchantreports mer
    ON mer.Store_Name = sid.Store_Name
 WHERE mpr.rec_fmt IN ('cvd','bat')
 ;
票数 0
EN

Stack Overflow用户

发布于 2013-06-26 22:00:05

关于SQL join,您可能会有一些有趣的here...

这是我们学过一次的东西,要在我们的一生中使用。

关于您的特定查询,测试第一个示例,

代码语言:javascript
复制
SELECT
  mer.store_name,
  mpr.`merchant_code`,
  mpr.`terminal_num`,
  mpr.`rec_fmt`,
  mpr.`bat_nbr`,
  mpr.`Card_Type`,
  mpr.`card_num`,
  mpr.`transaction_date`,
  mpr.`settle_date`,
  mpr.`approval_code`,
  mpr.`intnl_amt`,
  mpr.`domestic_amt`,
  mpr.`transid`,
  mpr.`upvalue`,
  mpr.`merchant_trackid`,
  mpr.`MSF`,
  mpr.`service_tax`,
  mpr.`edu_cess`,
  mpr.`net_amount`,
  mpr.`debit_credit_type`,
  mpr.`UDF1`,
  mpr.`UDF2`,
  mpr.`UDF3`,
  mpr.`UDF4`,
  mpr.`UDF5`,
  mpr.`seq_num`,
  mpr.`arn_no`
FROM merchantreports mer
INNER JOIN storename_tid sid ON (sid.Store_Name = mer.Store_Name)
INNER JOIN `mpr_reports` mpr ON (sid.terminal_num = mpr.terminal_num)
WHERE mpr.rec_fmt IN ('cvd','bat');

这只是一个谦虚的建议,考虑使用外键来连接您的表。索引"Store_Name“和"terminal_num”列也是一种选择,但遵循scriptures中编写的内容会更有效(参见小节)。5.4.5)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17321934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档