① sql怎麼將查詢排序後的數據更新到原本的表中
簡單回答:不能,也不應該。
要依某個順序查詢,請加入明確的排序指令,否則系統就會依系統認為最方便高效的方式給你列出數據。
相關說明:
1、當前主流的使用SQL操作的數據數主要是Oracle、MS Sql Server等等。它們有一個共同的做法,就是用戶不應對表中的物理記錄的順序進行關心。如果用戶需要對查詢出的記錄進行排序的話,請加入排序指令,這樣就能按用戶的「心意」進行排序列出了。
2、之所以用戶不應對表中的特理記錄的順序進行關心,那是因為通常情況下,一個表中的數據是會經常被更改、修正、刪增的,如果每一次的改動都要將整個表的物理順序進行修正的話,系統的運行效率就會嚴重低下。
3、如果你實在糾結,實在要在明確的排序指令的情況下查出的數據也按你的想法的順序出來的話,一般來說,小的數據表你可以將原來的數據刪除,然後重新追回進去。具體的做法類似於先SELECT,加order排序指令插入到臨時表,然後刪除原來表中的數據,然後insert臨時表中的數據到原表中。注意的是,這種方法對數據量不大的表,多數情況下有效,但對大量數據的表,很可能無效,因為系統為了效率,會按它的「想法」去讀寫數據。
② sql查詢出用戶名後如何如果更新每個用戶統計數據
上面的表 姓名是主鍵 不重復?如果是的話……
你先對下表 進行合計 查詢 按姓名分組(Group By)時間為條件(where time beteen xx and xx) count(time) as 次……類似這樣的……查詢
然後 更新查詢 把 表A 次數欄位 更新到 上述查詢的 次 ……where 表a.姓名 =……
這些 分段的語句 嵌套在一起就可以了……
看看下面的代碼 能不能實現你的需要吧……
UPDATE 表A INNER JOIN [SELECT 表B.username, Count(表B.時間) AS 計數
FROM 表B
WHERE (((表B.時間) Between #1/10/2014# And #1/15/2014#))
GROUP BY 表B.username]. AS 合計 ON 表A.username = 合計.username SET 表A.次數 = 合計.[計數];
如果上面的代碼 在你的機器上 無法運行的話 那麼分步進行……
生成一個臨時表
SELECT 表B.username, Count(表B.時間) AS 計數 INTO 表2
FROM 表B
WHERE (((表B.時間) Between #1/10/2014# And #1/15/2014#))
GROUP BY 表B.username;
然後再運行
UPDATE 表1 INNER JOIN 表2 ON 表1.username = 表2.username SET 表1.次數 = [表2].[計數];
③ mysql 我如何查詢一批數據後,並更新這批數據
有時候我們會不小心對一個大表進行了 update,比如說寫錯了 where 條件......
此時,如果 kill 掉 update 線程,那回滾 undo log 需要不少時間。如果放置不管,也不知道 update 會持續多久。
那我們能知道 update 的進度么?
實驗
我們先創建一個測試資料庫:
那我們怎麼准確的這個倍數呢?
一種方法是靠經驗:update 語句的 where 中會掃描多少行,是否修改主鍵,是否修改唯一鍵,以這些條件來估算系數。
另一種方法就是在同樣結構的較小的表上試驗一下,獲取倍數。
這樣,我們就能准確估算一個大型 update 的進度了。
④ mysql如何實現先查詢後更新的sql語句
UPDATE men_info as a INNER JOIN (select men_id,sum(amount) as amount from men_recharge_info where busin_type =1 and is_refund=0 and recharge_state=3 group by men_id) as b ON a.id=b.men_id SET a.total_recharge = b.amount;
⑤ 如何在同一個表中SQL查詢條件後再修改同一欄位的值
這是一個條件為子查詢的更新語句,代碼如下。
update a set meta_key=null
where post_id in(
select post_id from a
where meta_value=0.5
)and meta_key='start_see2'
⑥ SQL 怎麼用查詢結果更新列
t表 有沒有 與 published_date 相關聯的欄位?
如果有的話。
UPDATE t
SET
t.AV_L = tmp.AV__L
FROM
t JOIN
(SELECT
published_date,
sum(case when access_complexity='low' then 1 else 0 end) as AV__L
from base_metrics,entry,cvss
where entry.PrimaryKey=cvss.ForeignKey and
cvss.PrimaryKey=base_metrics.PrimaryKey
group by published_date) AS tmp
ON (t.日期欄位 = tmp.published_date);
⑦ SQL Server有表A,表B,查詢後立馬更新數據 求大神幫忙
先按照公式,把a表中的數值計算出來,然後關聯更新數據。
UPDATE B
SET B.aa = x.counts ,
B.bb = (case when x.counts >=10 and x.counts<20 then 4
when x.counts>=20 then 5
else null end )
FROM B
JOIN
(SELECT a.id,
SUM(CASE
WHEN a.aa IN (0, 1) THEN
2
WHEN a.aa IS NULL THEN
4
END) counts
FROM A GROUP BY id) x ON b.id = x.id
⑧ sql查詢 更新語句怎麼寫
1、首先需要打開sql server 資料庫。
⑨ SQL查詢並更新
stringsqlstr="selectID,日期,sum(1)"+"as次fromBwhere日期between'"
+dateTimePicker1.Value+"'and'"+dateTimePicker2.Value+"'groupbyID,日期orderby1";
根據需要可以該參數,但是不要改結構!這也是我研究了很久才弄出來的,有用就請採納!