sql在一个字段中查找重复项,并在另一个字段

时间:2018-01-04 02:48:01

标签: sql firebird

我的问题是如何进行SQL查询以查找订单ID的重复记录,其中产品描述中包含字符串“aaa”或“bbb”。所需的输出:

order_id   product_description
8899667    aaa
8899667    bbb
8866352    aaa
8866352    bbb

主要问题是我需要让product_description在字符串上有aaa或bbb,并且具有相同的order_ID。我希望这澄清。

感谢有关此事的任何帮助。

5 个答案:

答案 0 :(得分:0)

“发现”含糊不清 - 您想要按照自己的效果输出吗?如果是的话:

select order_id,product_description from table order by order_id,product_description

会得到你想要的东西。如果你想得到重复数,这样的事情可能会有所帮助:

select order_id,count(distinct product_description) as duplicates from table group by order_id order by order_id,duplicates desc

没有更多信息我无法帮助你。 HTH

答案 1 :(得分:0)

您可以为每个COUNT(*)提取ORDER_ID,然后选择那些有计数> 1. WHERE条件负责aaabbb过滤器值。

SELECT ORDER_ID
FROM
YOUR_TABLE
WHERE  (PRODUCT_DESCRIPTION like '%aaa%' 
        OR PRODUCT_DESCRIPTION like '%bbb%')
GROUP BY ORDER_ID
HAVING COUNT(*) > 1;

答案 2 :(得分:0)

使用相同ORDER_ID和PRODUCT_DESCRIPTION的记录包含'aaa'或'bbb':

SELECT * FROM
YOUR_TABLE
WHERE ORDER_ID IN 
(SELECT ORDER_ID
 FROM
 YOUR_TABLE
 GROUP BY ORDER_ID
 HAVING COUNT(*) > 1)
AND (  PRODUCT_DESCRIPTION like '%aaa%' 
    OR PRODUCT_DESCRIPTION like '%bbb%');

包含共享相同ORDER_ID的'aaa'或'bbb'的PRODUCT_DESCRIPTION记录:

 SELECT ORDER_ID
 FROM
 YOUR_TABLE
 WHERE
    (  PRODUCT_DESCRIPTION like '%aaa%' 
    OR PRODUCT_DESCRIPTION like '%bbb%')
 GROUP BY ORDER_ID
 HAVING COUNT(*) > 1; 

答案 3 :(得分:0)

试试这个......你给出了所需的答案:

 SELECT YourTable.order_id,
          YourTable.product_description
  FROM   YourTable
  JOIN   (SELECT  order_id
          FROM  YourTable
          GROUP BY order_id
          HAVING COUNT(*) > 1)             AS DuplicateRecords
  ON            (YourTable.order_id        =      DuplicateRecords.order_id)
  ORDER   BY YourTable.order_id

答案 4 :(得分:0)

也许尝试使用它:

选择*来自( 选择order_id,列表(product_description)ProdDesc 来自tbl 按order_id分组 )TempTable,其中TempTable.ProdDesc喜欢'%aaa%' 和TempTable.ProdDesc类似'%bbb%'