
update sql子查詢 在 コバにゃんチャンネル Youtube 的精選貼文

Search
Many of your NULLs may be excluded by the fact that you're using an INNER JOIN between the tables. Try flipping it around: UPDATE C SET ... ... <看更多>
#1. 【SQL分享】SQL-Server Update資料方式(Merge,CTE..)
【SQL分享】SQL-Server Update資料方式(Merge,CTE..) ... 想舉例子並做筆記整理sql-server多種更新方式假如大大們有其他資料庫或是更好、其他作法都可以提出討論。
#2. 以FROM 或子查詢實作UPDATE - SQL Server - Microsoft Learn
在Transact-SQL UPDATE 陳述式中,於原生編譯的T-SQL 模組內,「不」支援下列語法元素:. FROM 子句; 子查詢. 相較之下,SELECT 陳述式上的原生編譯模 ...
#3. 該怎麼update子查詢中的結果?- 藍色小舖BlueShop
是這樣的,我現在想要在某一個表格的欄位中update子查詢出來的結果(子查詢部分已經確認過 ... MY SQL,ORACLE也沒有此種語法那應該是MS SQL特有的語法
#4. mysql更新兩個表使用子查詢的案例 - TechBlog
在大陸的javaeye看到的先抄一下搞不好以後會看到 table a 要更新兩個欄位來源是table b 條件是age>=40. 解法1. 1 2 3, update a inner join b on ...
#5. SQL子查詢 - 極客書
子查詢 可以在SELECT,INSERT,UPDATE使用,而且隨著運算符如DELETE語句=, <, >, >=, <=, IN, BETWEEN 等. 這裡有一些規則,子查詢必須遵循:. 子查詢必須被圓括號括起來。
#6. SQL Server(00):根据子查询更新语句(update … from)
测试环境准备create table #table1 ( id int , name varchar(20) );gocreate table #table2 ( id int , name varc.
本文只說明PostgreSQL 和MS SQL Server 兩家的更新欄位並回傳資料結果的擴充語法。 ... 但不是每家資料庫系統都能把UPDATE 放在WITH 子查詢裡。
#8. mysql update 如何写子查询 - 51CTO博客
mysql update 如何写子查询,当使用mysql条件更新时--最先让人想到的写法UPDATEbuyerSETis_seller=1WHEREuidIN(SELECTuidFROMseller)此语句是错误的, ...
#9. [sql]批次更新資料使用子查詢sql update using subquery
不懂可提問:) REF http://stackoverflow.com/questions/14618703/update-query-using-subquery-in-sql-server. mysql sql. 位置: 台灣.
#10. Update query using Subquery in Sql Server - Stack Overflow
you can join both tables even on UPDATE statements, UPDATE a SET a.marks = b.marks FROM tempDataView a INNER JOIN tempData b ON a.Name = b.Name.
#11. [MSSQL] 用其它的Table 來更新資料(Update From Table)
UPDATE table1 SET table1.col = table2.col1FROM table2 WHERE table2. ... [MSSQL] 查詢資料實際長度(SQL Select Length). ・2008/12/05.
#12. mysql update不支持同一个表的子查询更新 - CSDN博客
子集,这样就不会select 和update 都是同一个表。致此问题得到完美解决。 方法2:inner join. 参考:. 在sql server中,我们可是使用以下update语句 ...
#13. mysql update使用子查询 - 阿里云开发者社区
一直没弄明白这个错误,然后经过多次度娘后,发现mysql update时,更新的表不能在set和where中用于子查询。 修改上面的sql为mysql数据库支持的方式:
#14. UPDATE 语句中的子查询- 炼码教程 - GitBook
子查询 可以用在UPDATE 语句中。 · 当子查询同UPDATE 一起使用的时候,既可以更新单个列,也可更新多个列。 · 现在有与teachers 表拥有相同结构和数据的teachers_bkp 表。
#15. SQL UPDATE - 1Keydata SQL 語法教學
在這個例子中,只有一筆資料符合WHERE 子句中的條件。如果有多筆資料符合條件的話,每一筆符合條件的資料都會被修改的。 我們也可以同時修改好幾個欄位 ...
#16. 在SQL 查詢建置器中於UPDATE 陳述式中建立SET 子句 - IBM
在「SQL 查詢建置器」中將表格新增至UPDATE 陳述式之後,便可以建立SET 子句。SET 子句指定要更新的直欄以及直欄的新值。
#17. SQL子查询 - 易百教程
子查询 用于返回将被用于在主查询作为条件的数据,以进一步限制要检索的数据。 子查询可以在SELECT,INSERT,UPDATE使用,而且随着运算符如DELETE语句=, <, >, >=, < ...
#18. 如何在執行前測試Insert 和Update 陳述式 - Navicat
這能告訴你兩件事:. 查詢是否有語法錯誤;如果是這樣,查詢計劃命令本身將會失敗。 資料庫計劃如何執行查詢,例如將 ...
#19. 记一次Mysql中update语句中的where带有子查询执行缓慢的分析
最近看到了有同事反映执行单条update语句巨慢的情况,初步看了一下sql,平淡无奇,但看到了执行时间长达要2分钟,我就来了兴趣想研究一下。
#20. 在SQL Server中使用子查询更新语句_MsSql - 脚本之家
这篇文章介绍了在SQL Server中使用子查询更新语句的方法, ... 或子查询方式update a set a.name = ( select b.name from #table2 b where a.id ...
#21. 查詢(SQL) - 維基百科,自由的百科全書
SELECT是SQL資料操縱語言(DML)中用於查詢表格內欄位資料的指令,可搭配條件限制的子句(如where) ... 子查詢是巢狀於SELECT、INSERT、UPDATE、DELETE等語句中的查詢。
#22. [進階SQL]With As進行子查詢(CTE)[SQL-004] - Medium
CTE後面必須直接使用CTE資料行(column)的單一expression。例如: SELECT 、 INSERT 、 UPDATE 、 DELETE 。 CTE可以引用自身,也可以引用在同一 ...
#23. SQL 子查詢| 他山教程,只選擇最優質的自學材料
子查詢 (也稱為巢狀查詢或子選擇)是嵌入在另一個SQL 查詢的帶有 WHERE 和 ... 在 INSERT 、 UPDATE 或 DELETE 內部使用它們,或者其它子查詢中使用。
#24. UPDATE介紹 - Oracle SQL學習筆記本
何謂UPDATE. 在表格內修改資料,可使用WHERE子句或子查詢指定要更改的資料,如果不指定會更新所有表格資料. 格式. UPDATE table_clause. SET update_row.
#25. SQL子查詢 - tw511教學網
子查詢 是另一個SQL查詢中的查詢,並嵌入在WHERE子句中。 重要規則: 子查詢可以放在許多SQL子句中,如WHERE子句,FROM子句,HAVING子句。可以將子查詢與SELECT,UPDATE ...
#26. 第七章進階的SQL 集合運算式
分群彙總查詢句. ▫ SQL的VIEW ... 子查詢句也可以參考到上層查詢句的資料表 ... G GRANT UPDATE ON Product (unitPrice) TO Account3;. ▫ 查詢的權力.
#27. SQL EXISTS - SQL 語法教學Tutorial - Fooish 程式技術
NOT EXISTS 則是相對於EXISTS,判斷為假才會繼續執行外查詢。 EXISTS 運算子用法(Example). 我們以IN 運算子來與EXISTS 作一比較,下列兩個SQL 查詢皆會 ...
#28. SQL UPDATE 语句 - 菜鸟教程
如果您省略了WHERE 子句,所有的记录都将被更新! 演示数据库. 在本教程中,我们将使用RUNOOB 样本数据库。 下面是选自"Websites" 表的 ...
#29. UPDATE 语句[SQL Remote]
subscription-expression SQL Remote 使用subscription-expression 的值确定行的新接收者和现有接收者。subscription-expression 是一个值或一个子查询。
#30. sql update set 子查询返回多于一行 - 百度知道
sql update set 子查询返回多于一行. updateASET(XM1,ZH1,ZW1)=(SELECTXM,ZH,ZWFROMBWHEREA.XM=B.XM,A.ZH=B.ZH)WHEREEXISTS(SELECT1FROMWHEREA.XM=B.XM,A.ZH=B.ZH,A)A ...
#31. 6.4. 修改並回傳資料 - PostgreSQL 正體中文使用手冊
INSERT、UPDATE 和DELETE 指令都有一個選擇性的RETURNING 子句來支持這個功能。使用RETURNING 可以避免執行額外的資料庫查詢來收集資料,特別是在難以可靠地識別修改的 ...
#32. 如何使用SQL UPDATE 和SQL DELETE 语句更新或删除表数据
在此例子中,更新顾客 1000000006 的 cust_contact 和 cust_email 列。 提示:在 UPDATE 语句中使用子查询. UPDATE 语句中可以使用子查询,使得能用 SELECT ...
#33. SQL update using subqueries - w3resource
In this page we are discussing about the usage of subquery to update the values of columns with the UPDATE statement.
#34. SQL update with correlated subquery
A correlated subquery is a SELECT statement nested inside another T-SQL statement, which contains a reference to one or more columns in the outer query.
#35. SQL优化之一则MySQL中的DELETE、UPDATE 子查询的锁 ...
对大表或高并发的表的执行DELETE、UPDATE 子查询操作,甚至可能导致业务长时间不可用。 MySQL 下的InnoDB 行锁,是通过以位图方式对index page 加锁机制来 ...
#36. How to UPDATE from a SELECT statement in SQL Server
UPDATE from SELECT: Subquery Method · If the subquery could not find any matched row, the updated value will be changed to NULL · If the subquery ...
#37. How to Use Subqueries in INSERT, UPDATE, and DELETE ...
Like SELECT , the UPDATE statement can have a subquery in several places or clauses. In an UPDATE , the two clauses in which subqueries are used ...
#38. SQL UPDATE 语句(更新表中的记录) - 编程狮
还可以使用AND或OR运算符组合多个条件。 SQL UPDATE 语法. 具有WHERE子句的UPDATE查询的基本语法如下所示: UPDATE table_name SET ...
#39. [MS SQL]子查詢與查詢多個資料來源 - 機車物語
子查詢子查詢 意指巢狀結構存在於SELECT、INSERT、UPDATE、DELETE敘述中的SELECT查詢。子查詢可在巢狀子查詢,子查詢為join關聯資料子查詢與無關聯資料使用in(某段SEL.
#40. SQL 子查询| 奇客谷教程
子查询返回的数据,由外部语句使用时,使用方式与普通值相同。 ... SQL 子查询 ... 子查询最常与 SELECT 语句一起使用,但是也可以在 INSERT 、 UPDATE 或 DELETE 语句 ...
#41. 27 SQL 子查询1_SQL 入门教程 - 慕课网
其中 table_name 表示数据表名称, col 表示字段名, operator 表示字段操作。 子查询可灵活用于Insert、Select、Update 和Delete 指令 ...
#42. SQL UPDATE更新查詢 - 億聚網
SQL UPDATE查詢 用來修改在表格中的現有記錄。 可以使用WHERE與UPDATE查詢子句來更新所選行,否則所有的行會受到影響。 Syntax: UPDATE查詢使用WHERE子 ...
#43. The Subquery in an UPDATE statement - Learning MySQL By ...
Subqueries may be used in an UPDATE statement; Since it is possible to change many values at once with a subquery, take special care before running an ...
#44. SQL自学指南(12):SQL子查询 - 知乎专栏
子查询 是一个可以在总共四种SQL数据语句中使用的强大工具。 ... 除非你编写的是update语句或delete语句(通常使用关联子查询),否则你遇到的大多数子 ...
#45. mysql update子查询问题- 互助交流区 - GreatSQL社区
... 是一个语法错误,应该为select m_id from (select max(id) as m_id from t1 where c2 = 1) a ... mysql update子查询问题,GreatSQL社区.
#46. How to update where subquery value is null in SQL Server
Many of your NULLs may be excluded by the fact that you're using an INNER JOIN between the tables. Try flipping it around: UPDATE C SET ...
#47. SQL Update 语句 - freeCodeCamp
SQL UPDATE 语法要使用UPDATE 方法,首先要确定需要使用UPDATE ... 因此,在发出 UPDATE 查询之前,请使用相同的 WHERE 子句发送 SELECT 查询。
#48. SQL 使用另一个表的数据更新记录 - 极客教程
正如本实例所示,在 UPDATE 语句里使用关联子查询是常用做法。另一种方法是创建一个视图(传统视图或者内嵌视图均可,这取决于数据库是否支持),然后更新该视图即可。
#49. SQL UPDATE from SELECT statement [SOLVED]
Method-1: Using the SELECT Subquery Statement. SQL update using SQL select subquery is the simple and straightforward method to update the existing table record ...
#50. SQL 基本
UPDATE CUSTOMERS SET SALARY = SALARY * 0.25 WHERE AGE IN (SELECT AGE FROM CUSTOMERS_BKP WHERE AGE >= 27 );. DELETE:可以使用從子查詢收到的資料做為刪除標準。
#51. [SQL Server]:UPDATE 或DELETE 陳述式,請勿使用NOLOCK
SQL Server 查詢最佳化工具會忽略套用在UPDATE 或DELETE 陳述式目標資料表的FROM 子句中的READUNCOMMITTED 和NOLOCK 提示。 請避免在新的開發工作中 ...
#52. Example: UPDATE With a Correlated Subquery in its WHERE ...
Teradata Vantage™ SQL Data Manipulation Language. Product: Teradata Database: Teradata Vantage NewSQL Engine; Release Number: 16.20; Published: March 2019 ...
#53. SQL Server SQL 重要語法(持續更新中) | 吉米技術手札 - - 點部落
摘要:SQL Server SQL 重要語法(持續更新中). 子查詢Update. (跨資料庫Update之方法) 資料庫1 資料庫2 資料表A 欄位a 欄位key. Update [資料庫1.dbo.
#54. MSSQL 的觸發程序TRIGGER - 寫什麼
SSMS:Microsoft SQL Server Management Studio 18 ... EXISTS 指定測試資料列是否存在的子查詢 IF UPDATE([指定欄位]) AND EXISTS([子查詢]) -- if ...
#55. SQL基礎知識——子查詢 - 每日頭條
子查詢 可以在SELECT、INSERT、UPDATE和DELETE語句中, ... 也可以稱作嵌套查詢(Nested Query),是一種嵌套在其他SQL 查詢的WHERE 子句中的查詢。
#56. UPDATE 子查询的锁机制失效案例 - 搜狐
SQL 优化之一则MySQL中的DELETE、UPDATE 子查询的锁机制失效案例 ... 对大表或高并发的表的执行DELETE、UPDATE 子查询操作,甚至可能导致业务长时间不可用。
#57. SQL Server T-SQL 學習筆記
子查詢 SubQuery; Set Operator ... 學習T-SQL 的重點順序,首先是熟悉ANSI SQL 共有的查詢,包括:. SELECT, UPDATE, DROP, ALTER, ... UPDATE dbo.
#58. Oracle PL/SQL: Subquery 子查詢的使用 - 昭佑.天翔
Oracle PL/SQL: Subquery 子查詢的使用. 在Oracle PL/SQL 中, 可以在5 個地方使用Subquery, 也就是將"Select" 語法寫在"Select" ... update tom_l t1
#59. SQL: Update using correlated subquery - YouTube
An example of updating the values in one table using data from another table. To do this, you need a subquery that preforms a lookup for ...
#60. UPDATE only rows which match another table in SQL
The reason some of your rows are getting NULLs updated is due to the subquery. When the subquery fails to find a matching row in tblB, ...
#61. MySQL UPDATE多表关联更新 - C语言中文网
4. 通过子查询. 也可以通过子查询进行多表更新,SQL 语句和执行过程如下: mysql> UPDATE product_price pp SET price=(SELECT price* ...
#62. SQL指令優化SQL Tuning - 計中首頁- 國立臺灣大學
3. 執行結果,如下圖所示。 圖三. 如何建立有效率的SQL查詢. SQL指令調校過程是特別針對WHERE條件子句, ...
#63. SQLite 子查询| W3School Sql 教程
使用子查询返回的数据将被用在主查询中作为条件,以进一步限制要检索的数据。 子查询可以与SELECT、INSERT、UPDATE 和DELETE 语句一起使用, ...
#64. [SQL Server]透過TABLOCKX語法以避免取號功能取到重複的值
接著將左邊視窗的UPDATE及COMMIT做執行,. 會發現右邊的SELECT語法完成了,. 而查詢結果是左邊視窗UPDATE後的結果,. 6. 結論:. 透過TABLOCKX語法,.
#65. 5 Ways to Update Data with a Subquery in Oracle SQL
UPDATE product p SET active = ( SELECT CASE WHEN COUNT(*) > 0 THEN 'Y' ELSE 'N' END FROM order_line o WHERE o.product_id = p.product_id );. The subquery will ...
#66. 子查询- SQL 语法入门- UDN开源文档
子查询 用于为主查询返回其所需数据,或者对检索数据进行进一步的限制。 子查询可以在SELECT、INSERT、UPDATE 和DELETE 语句中,同=、 ...
#67. Using UPDATE from SELECT in SQL Server - The Quest Blog
The above query uses a SELECT statement in the SET clause of the UPDATE statement. If the subquery finds a matching row, the update query ...
#68. SQL:結構化查詢語言 - 國立聯合大學
SQL (Structured Query Language, 結構化查詢語言) 是一. 種用來與關連式資料庫系統對話 ... 針對Table內的Data,做插入(Insert)、更新(Update)、刪除(Delete)等動作。
#69. SQL子查询-之路教程
SQL子查询 介绍. 子查询是嵌套在另一个查询(如SELECT、UPDATE或DELETE语句)中的常规SELECT语句。 下图说明了子查询的概念:. 子查询也称为内部选择或内部查询,而包含 ...
#70. T-SQL - 子查询 - 蝴蝶教程
子查询 可以与SELECT、INSERT、UPDATE 和DELETE 语句以及=、<、>、>=、<=、IN、BETWEEN 等运算符一起使用。 子查询必须遵循一些规则-. 您必须将子查询括在括号中。 子查询 ...
#71. 執行一次SQL查詢,UPDATE多行記錄 - 程式師世界
通常情況下,我們會使用以下SQL語句來更新字段值:. 1. UPDATE mytable SET myfield='value' WHERE other_field='other_value';.
#72. MySQL UPDATE 用法与实例 - 数据库教程
UPDATE 关键字后指定要更新数据的表名。 使用 SET 子句设置字段的新值。多个字段使用逗号分隔。字段的值可以是普通的字面值,也可以是表达式运算,还可以是子查询。
#73. Use SQL UPDATE (Oracle Subquery) - RelationalDBDesign
This page describes how to write SQL to update a table using a subquery in PL/SQL.
#74. [SQL ] Update裡面進行子查詢失敗- 看板Database - 批踢踢實業坊
資料庫名稱:Mysql 資料庫版本:MySQL 5.5.44-MariaDB - MariaDB Server 內容/問題描述:( 使用別的辦法解決問題了) 問題的SQL: UPDATE `players`
#75. SQL UPDATE 和DELETE 趴配JOIN 方法- 程式狂想筆記
可以搭配用JOIN 方式這種常常查詢資料都要搭配程式for 迴圈實作我覺得非常 ... 就是把 b 表換成子查詢可以用JOIN 方式改變 a 表的內容省了寫程式code
#76. 使用子查询Oracle 更新, 在WHERE 子句中使用子查询进行SQL 更新 ...
我可以给出的更新查询的最佳建议是切换到SqlServer ;) update mytable t set z = ( with comp as (select b.*, 42 as computed from mytable t where bs_id = 1) ...
#77. SQL入门教程第50集使用UPDATE语句更新数据
SQL 标准使用 UPDATE 语句更新表中的数据。 ... SQL 入门教程第36集 子查询 概述. 2021-10-20. App打开. SQL 入门教程第36集 子查询 概述. SQL 入门教程第37集标量子查询.
#78. How to Update a Column Based on a Filter of Another Column
This question leads to a few different ways you could do this. Since the WHERE clause can contain any valid expression, you could use a subquery: UPDATE table ...
#79. Update 語法在SQL Server v.s. Access - 隨便寫寫的新天地
當要關聯多個資料表(Table) 來執行Update 指令時【SQL Server】 UPDATE Tab1 SET a.Name = b.Name.
#80. Sql Does Not Contain
The SQL NOT condition (sometimes called the NOT Operator) is used to negate a condition in the WHERE clause of a SELECT, INSERT, UPDATE, or DELETE statement ...
#81. Query Builder - Laravel - The PHP Framework For Web Artisans
If you plan to update the retrieved records while chunking, ... that any query using raw expressions is protected against SQL injection vulnerabilities.
#82. SQL EXISTS Operator - W3Schools
The EXISTS operator returns TRUE if the subquery returns one or more records. EXISTS Syntax. SELECT column_name(s) FROM table_name. WHERE ...
#83. SQL 雙資料表關連多條件指令請教 - Mobile01
所要達到的查詢結果是,要找出有修過那些科目且成績達到多少以上的學生名字。 ... <=、>、>= 或是子查詢作為運算式使用時是不允許的。 不想唸物理了.
#84. Top 40 SQL Query Interview Questions and Answers for Practice
Write an SQL query to fetch the EmpIds that are present in both the tables – 'EmployeeDetails' and 'EmployeeSalary. Ans. Using subquery-. SELECT ...
#85. SQL Insert Into, update - 翻轉工作室
9-3-2 範例研討:輸入監護人資料. (A) 程式功能:Ex8_3. 請輸入監護人資料,如下:. 學號:90211304 、監護人:劉媽媽、電話:0923111223、地址:高雄市苓雅區 20 號、 ...
#86. MySQL 8.0 Reference Manual :: 13.2.13 SELECT Statement
Use of column positions is deprecated because the syntax has been removed from the SQL standard. Prior to MySQL 8.0.13, MySQL supported a nonstandard syntax ...
#87. ORACLE SQL语句基础培训.ppt - 人人文库
SQL 介绍3目录1SQL介绍2DML基础3DDL基础4DCL基础5TL基础2/4/20234算术运算符关系运算符逻辑运算符SELECT语句:查询数据集合运算符:复合查询SUBQUERY子 ...
#88. PostgreSQL Tutorial - Learn PostgreSQL from Scratch
... systems such as MySQL, Oracle, and Microsoft SQL Server to PostgreSQL. ... Upsert – insert or update data if the new row already exists in the table.
#89. SQL MCQ (Multiple Choice Questions) - javatpoint
SQL MCQ (Multiple Choice Questions) with sql, tutorial, examples, insert, update, delete, select, join, database, table, join etc, SQL CAST Function, ...
#90. SQL Interview Questions CHEAT SHEET (2023) - InterviewBit
UPDATE myDB.students /* action query */ SET fname = 'Captain', lname = 'America' WHERE student_id = 1;. 18. What is a Subquery? What are its ...
#91. GORM - The fantastic ORM library for Golang, aims to be ...
... Hooks (before/after create/save/update/delete/find); Eager loading with ... Find/Create with Map, CRUD with SQL Expr and Context Valuer; SQL Builder, ...
#92. SQL Server 2014資料庫設計與開發實務(電子書)
UPDATE 課程 SET 名稱='資料庫系統(二)',學分=4 WHERE 課程編號= 'CS410' SQL 指令碼 ... 10-3-2 在 UPDATE 指令使用子查詢如果需要,我們可以在 UPDATE 指令的 ...
#93. Oracle DBA必备技能详解/Portable DBA Oracle essential techniques ...
15.3 update 命令 update 命令用于更新表、基表、视图或者物化视图中已经存在的数据。在本节中,我们将首先学习 ... 子查询返回的列数应该和 update 语句中的列数相同。
#94. SQL应用与开发标准教程 - 第 187 頁 - Google 圖書結果
在 SQL Server 和 Access 中不能用子查询来插入数据,而在 Oracle 中可以。 9.5.2 使用查询更新数据 UPDATE 语句允许修改表中已有数据。和 INSERT 语句一样, ...
update sql子查詢 在 [SQL ] Update裡面進行子查詢失敗- 看板Database - 批踢踢實業坊 的推薦與評價
資料庫名稱:Mysql
資料庫版本:MySQL 5.5.44-MariaDB - MariaDB Server
內容/問題描述:( 使用別的辦法解決問題了 )
問題的SQL:
UPDATE `players`
SET `players`.`xp` = `players`.`xp` +
(SELECT count(oldplayers.`pid`) as addxp FROM (select
tmp.`pid`,tmp.`loginTime` from `players` tmp) as oldplayers
inner join `friends` tmpf on oldplayers.`pid` = tmpf.`playerB` where
tmpf.`friendship` = 2 and oldplayers.`loginTime` > (NOW() - INTERVAL 3 DAY)
and tmpf.`playerA` = 133223225)
WHERE `pid` = 133223225 ;
中間那一段(SELECT ... tmpf.`playerA` = 133223225 )
單獨執行可得到資料筆數2筆, 用上述語法卻是查到 0筆
大家好,
這個SQL問題的背景是我把玩家經驗值xp
設計成需要好友進行登入遊戲才會增加玩家經驗值xp,
相關條件有:
好友登入動作需要在過去三天內進行才有效
( players.loginTime > (NOW() - INTERVAL 3 DAY) )
好友關係成立
( friends.friendship = 2 )
以上條件成立時,根據查詢到的資料筆數,
用來增加玩家資料表players 的經驗值xp
玩家資料表
TABLE players
pid
xp (經驗值)
loginTime (登入時間)
玩家的好友資料表
TABLE friends
playerA (玩家本人pid ,資料內容可對應 players.pid)
playerB (好友的pid, 資料內容可對應 players.pid)
friendship (交往程度,2表示好友)
SQL 1 (沒有問題, 可成功查詢SQL 2需要的 xp):
SELECT count(oldplayers.`pid`) as addxp
FROM (select tmp.`pid`,tmp.`loginTime` from `players` tmp) as oldplayers
inner join `friends` tmpf on oldplayers.`pid` = tmpf.`playerB`
WHERE tmpf.`friendship` = 2 and oldplayers.`loginTime` > (NOW() - INTERVAL 3
DAY) and tmpf.`playerA` = 133223225
SQL 2
(有問題的語法, 這是使用SQL 1的部分加入Update 裡,
查詢xp 完畢後同時更新xp, 語法執行沒有出現問題, 但是結果有問題,
xp 沒有增加, 經測試後得知 SQL 1的部分得到0, Why ???)
UPDATE `players`
SET `players`.`xp` = `players`.`xp` +
(SELECT count(oldplayers.`pid`) as addxp FROM (select
tmp.`pid`,tmp.`loginTime` from `players` tmp) as oldplayers
inner join `friends` tmpf on oldplayers.`pid` = tmpf.`playerB` where
tmpf.`friendship` = 2 and oldplayers.`loginTime` > (NOW() - INTERVAL 3 DAY)
and tmpf.`playerA` = 133223225)
WHERE `pid` = 133223225 ;
SQL 3 (上述的語法都只有針對單一玩家, 如果有N個玩家就要執行N次,
SQL 3改為針對所有玩家進行一次處理)
本人能力不足做不出來...
先感謝大家看完了這複雜的問題...
懇請高手幫忙
====================用別的辦法解決問題了
SQL n1:
( 查詢每個玩家須要加多少xp )
SELECT `playerA`,count(`playerA`) as addxp FROM `players` inner join
`friends` on `players`.`pid` = `friends`.`playerB` WHERE `friendship` = 2
and `loginTime` > (NOW() - INTERVAL 3 DAY) GROUP BY `playerA`
SQL n2:
( N個玩家更新xp 資料, 下列語法中的111 與 222 是SQL n1的查詢結果addxp 與
playerA,
再用中間程式( 我的是node.js )去拚出 N 句SQL n2給MySql執行)
Update players Set xp = xp + 111 where pid = 222 ;
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.250.106.218
※ 文章網址: https://www.ptt.cc/bbs/Database/M.1481621555.A.D2B.html
※ 編輯: osanaosana (60.250.106.218), 12/13/2016 17:36:30
※ osanaosana:轉錄至看板 GameDesign 12/13 17:44
※ 編輯: osanaosana (60.250.106.218), 12/14/2016 10:57:47
※ 編輯: osanaosana (60.250.106.218), 12/14/2016 10:59:05
... <看更多>