当前位置: 首页 > 知识库问答 >
问题:

使用 SQL 查询在数据表中插入数据

蒯安平
2023-03-14

我有这样的查询(select id,reffid,someData from myTable):

id     reffid    someData
8        10       text1
9        10       text2
10       11       text3
11       11       text4
12       11       text5
13       11       text6
14       12       text7
15       12       text8
16       12       text9
17       13       text10
18       14       text11

我需要查询来执行以下操作:如果我有少于 4 个具有相同值的 reffid,则添加具有相同 reffid 的行并在 someData 中添加 -。结果查询应如下所示:

id     reffid    someData
8        10       text1
9        10       text2
???      10          -
???      10          -
10       11       text3
11       11       text4
12       11       text5
13       11       text6
14       12       text7
15       12       text8
16       12       text9
???      12          -
17       13       text10
???      13          - 
???      13          - 
???      13          - 
18       14       text11
???      14          - 
???      14          - 
???      14          - 

如何做到这一点?

共有1个答案

袁晋鹏
2023-03-14

尝试

SELECT t.id, l.reffid, COALESCE(t.somedata, '-') someData
  FROM
(
  SELECT reffid, rnum
    FROM
  (
    SELECT DISTINCT reffid
      FROM table1
  ) q CROsS JOIN 
  (
    SELECT 1 rnum UNION ALL
    SELECT 2 UNION ALL
    SELECT 3 UNION ALL
    SELECT 4
  ) n
) l LEFT JOIN 
(
  SELECT id, reffid, somedata, 
         ROW_NUMBER() OVER (PARTITION BY reffid ORDER BY id) rnum
    FROM table1
) t
   ON l.reffid = t.reffid
  AND l.rnum   = t.rnum

输出:

|     ID | REFFID | SOMEDATA |
|--------|--------|----------|
|      8 |     10 |    text1 |
|      9 |     10 |    text2 |
| (null) |     10 |        - |
| (null) |     10 |        - |
|     10 |     11 |    text3 |
|     11 |     11 |    text4 |
|     12 |     11 |    text5 |
|     13 |     11 |    text6 |
|     14 |     12 |    text7 |
|     15 |     12 |    text8 |
|     16 |     12 |    text9 |
| (null) |     12 |        - |
|     17 |     13 |   text10 |
| (null) |     13 |        - |
| (null) |     13 |        - |
| (null) |     13 |        - |
|     18 |     14 |   text11 |
| (null) |     14 |        - |
| (null) |     14 |        - |
| (null) |     14 |        - |

这是SQLFiddle演示

 类似资料:
  • 问题内容: 我可以在SQL Server 2008的Function中编写插入查询吗?如果尝试,会在函数中收到无效使用副作用运算符’INSERT’的错误。请帮帮我。但我希望它是一个函数,而不是存储过程 问题答案: 从这里引用: 用户定义的函数不能用于修改基表信息。DML语句INSERT,UPDATE和DELETE不能在基表上使用。 因此,您无法在函数中执行INSERT。 您可能想解释为什么不想使用

  • 目前正在android studio中用java进行一个项目,我正在尝试用sql查询两个表。各表如下: 预订表 User_Bookings表 用户表仅供参考 有没有一种方法可以使用UNION或INNER JOIN并仅使用用户ID连接这两个表? 例如,对于ID为2的用户,我希望从预订表中获得出发时间 还是UNION/INNER JOIN不是我试图实现的目标的正确运算符?正如我一直在尝试和复习我的SQ

  • 问题内容: 我有一个输出当前数据的现有查询,我想将其插入到Temp表中,但是这样做有一些问题。有人会对如何执行此操作有一些见解吗? 这是一个例子 这似乎当前以我需要的方式输出我的数据,但我想将其传递到临时表中。我的问题是我对SQL查询还很陌生,还没有找到一种方法来做到这一点。或者,即使有可能。如果不可能,是否有更好的方法将我要查找的数据获取到临时表中? 问题答案:

  • 我有一个输出当前数据的现有查询,我想将其插入到Temp表中,但这样做有一些问题。有人对如何做到这一点有一些见解吗? 这里有一个例子 这似乎以我需要的方式输出了我的数据,但我想将其传递到临时表中。我的问题是我对SQL查询很陌生,并且无法找到这样做的方法。或者如果可能的话。如果不可能,有没有更好的方法将我正在寻找的获取到临时表中?

  • 我的准备好的语句有问题,但我无法找出错误所在。我正在尝试将URI链接插入数据库。 错误

  • 我正在尝试使用Scala中的Spark SQL查询Cassandra数据。 并抛出错误: org.apache.spark.sql.AnalysisException:找不到表或视图:.;第1行第14位;'Project[*]+-'UnresolvedRelation. 谢谢你。