我的数据库中有两个表,如下表所示。在每个表DETEM_MENT_CODE的第一个ITEM表中,将有多个ITEM_CODE。
ITEM
----------------------------------------------------
"STORE_CODE" "ITEM_CODE" "DEPARTMENT_CODE"
"011" "912003" "14"
"011" "912004" "14"
"011" "914001" "14"
----------------------------------------------------
COMPETITOR
--------------------------------------------------------------
"STORE_CODE" "ITEM_CODE" "DEPARTMENT_CODE" "COMPETITOR_CODE"
"011" "912003" "14" "01"
"011" "912003" "14" "02"
"011" "912003" "14" "03"
"011" "912004" "14" "01"
"011" "912004" "14" "02"
"011" "912004" "14" "04"
"011" "914001" "14" "01"
"011" "914001" "14" "02"
"011" "914001" "14" "03"
-------------------------------------------------------------
在表COMPETITOR evey ITEMCODE中将有三个条目,并且具有不同的competitor_Code
我有三个值Comp_1,comp_2,comp_3和department_code = 14;
我想做的是用comp_1,comp_2,comp_3更新COMPETITOR表,以获取每个项目的ITEM表中的Item_code(项目html" target="_blank">代码为14)
样本输出
COMPETITOR
--------------------------------------------------------------
"STORE_CODE" "ITEM_CODE" "DEPARTMENT_CODE" "COMPETITOR_CODE"
"011" "912003" "14" "Comp_1"
"011" "912003" "14" "Comp_2"
"011" "912003" "14" "Comp_3"
"011" "912004" "14" "Comp_1"
"011" "912004" "14" "Comp_2"
"011" "912004" "14" "Comp_3"
"011" "914001" "14" "Comp_1"
"011" "914001" "14" "Comp_2"
"011" "914001" "14" "Comp_3"
-------------------------------------------------------------
我该如何为此编写单个oracle查询?
以下内容假定ITEM_CODE仅分配给一个DEPARTMENT_CODE,因为它很简单并且您没有给我们进一步的业务规则。如果此假设是错误的,则需要相应地调整逻辑。
我还结合了您的要求,即COMPETITOT.COMPETITOR_CODE的现有值不可靠。
给定这个测试日期:
SQL> select * from competitor
2 /
STORE_CODE ITEM_CODE DEPARTMENT_CODE COMPETITOR
---------- ---------- --------------- ----------
11 912003 14 01
11 912003 14 04
11 912003 14 03
11 912004 14 01
11 912004 14 02
11 912004 14 04
11 914001 14 01
11 914001 14 02
11 914001 14 05
9 rows selected.
SQL>
我们可以使用解析ROW_NUMBER()为COMPETITOR_CODE生成必要的句柄:
SQL> update competitor c
2 set competitor_code =
3 (select decode (dr
4 , 1, 'Comp_1'
5 , 2, 'Comp_2'
6 , 3, 'Comp_3')
7 from ( select row_number() over ( partition by x.item_code
8 order by x.rowid ) as dr
9 , x.rowid as row_id
10 from competitor x
11 where x.item_code in ( select item_code
12 from item
13 where department_code = 14 ) ) l
14 where c.rowid = l.rowid )
15 /
9 rows updated.
SQL>
这是期望的结果(除非对业务规则进行任何其他添加):
SQL> select * from competitor
2 /
STORE_CODE ITEM_CODE DEPARTMENT_CODE COMPETITOR
---------- ---------- --------------- ----------
11 912003 14 Comp_1
11 912003 14 Comp_2
11 912003 14 Comp_3
11 912004 14 Comp_1
11 912004 14 Comp_2
11 912004 14 Comp_3
11 914001 14 Comp_1
11 914001 14 Comp_2
11 914001 14 Comp_3
9 rows selected.
SQL>
OTA更新查询与下载 获取access_token 终端设备 终端设备直接接入OTA服务器应当使用Client Credentials模式,client_id为设备id,client_serect为设备令牌. App接入 如果终端设备无法直接接入OTA服务器,而通过App中转,那么App应当也使用Client Credentials模式,client_id为app_id,client_secret
以下示例将演示如何使用Update查询,在DBUtils的帮助下更新记录。 我们将更新表中的记录。 语法 其中, updateQuery − 更新包含占位符的查询。 queryRunner − QueryRunner对象更新数据库中的员工对象。 为了理解上述与DBUtils相关的概念,我们编写一个将运行更新查询的示例。创建一个示例应用程序。 更新在DBUtils入门应用中创建的文件。 编译并运行应
问题内容: 我有一个包含三列的表: 还有另一个表,其中包含2列。的列与的相同。 我需要一个查询,它将更新带有的列。 我可以通过检查ID并执行更新语句来通过循环来实现。如何才能通过查询完成? 问题答案: 怎么样
问题内容: 谁能帮助我了解为什么此更新查询未更新数据库中的字段?我在我的php页面中有这个来从数据库中检索当前值: 这是我的HTML表单: 这是我的“ editblogscript”: 我不明白为什么它不起作用。 问题答案: 您必须在查询中的所有VARCHAR内容周围加上单引号。因此,您的更新查询应为: 同样,用POST中的内容直接更新数据库是一种不好的形式。您应该使用mysql_real_esc
从select语句更新表时遇到问题...下面是命令: 我要传递给此查询的参数将是sub sub查询中的report_id...select单独执行需要0.113秒,而update查询总共需要4.868秒。是因为update查询将对表的每一行执行select语句吗?我怎么能让这更快? 谢谢你
我知道我可以通过http://localhost:9200/[index_name]/[index_type]/[_id]更新特定的文档,但是我的文档中的_id有#个符号,Sense找不到它们。 了解查询DSL将能够执行一个搜索,我能够指出_id不在URL中。资源:https://www.elastic.co/guide/en/elasticsearch/reference/current/que