我有下表

 (cl1  ,  cl2)
  ----  ----
  (a   ,  1)
  (a   ,  2)
  (b   ,  2)
  (c   ,  1)
  (c   ,  2)


每个a,b,c可以取两个值(1或2或两个)。

我的问题是:
如何为示例中仅具有1或2而不同时具有两者的所有cl1插入新行(在cl2上为0)。我想插入以下行:

----
(b   ,  0)
----

最佳答案

我假设BD是Oracle。希望以下代码段对您有所帮助。

SELECT B.CL1,
  0
FROM
  (SELECT A.CL1,
    CASE
      WHEN WMSYS.WM_CONCAT(A.CL2) LIKE '%1%'
      AND WMSYS.WM_CONCAT(A.CL2) LIKE '%2%'
      THEN 'both'
      ELSE 'one'
    END rnk
  FROM
    (SELECT 'a' cl1,1 cl2 FROM dual
    UNION ALL
    SELECT 'a' cl1,2 cl2 FROM dual
    UNION ALL
    SELECT 'b' cl1,2 cl2 FROM dual
    UNION ALL
    SELECT 'c' cl1,1 cl2 FROM dual
    UNION ALL
    SELECT 'c' cl1,2 cl2 FROM dual
    )A
  GROUP BY A.CL1
  )B
WHERE B.rnk = 'one';

关于mysql - 使用SQL为二进制系统插入新行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37841901/

10-11 04:54