mysql 的delete from 子查詢限制
1.使用mysql進行delete from操作時,若子查詢的 FROM 字句和更新/刪除物件使用同一張表,會出現錯誤。
mysql> DELETE FROM tab1 WHERE col1 = ( SELECT MAX( col1 ) FROM tab1 );
ERROR 1093 (HY000): You can’t specify target table ‘tab1′ for update in FROM clause
針對“同一張表”這個限制,撇開效率不談,多數情況下都可以通過多加一層select 別名表來變通解決,像這樣
DELETE FROM tab1
WHERE col1 = (
SELECT MAX( col1 )
FROM (
SELECT * FROM tab1
) AS t
);
------------------------------------------------------------------------
2. mysql delete from where in 時後面 的查詢語句裡不能加where條件
Sql程式碼
delete from `t_goods` where fi_id in (select * from ( select fi_id from `t_goods` where fs_num is null and fs_name is null and fs_type is null and fs_using is null and fs_lifetime is null) b)
Sql程式碼
delete from `t_goods` where fi_id in (select fi_id from `t_goods` where fs_num is null and fs_name is null and fs_type is null and fs_using is null and fs_lifetime is null)
Sql程式碼
delete from `t_goods` where fi_id in ( select fi_id from `t_goods` )
上面三種情況,只有中間的不能執行。
綜合起來就是mysql delete from where in 時後面 的查詢語句裡不能加where條件
---------------------------------------------------------------------------
3. delete from table... 這其中table不能使用別名
Sql程式碼
delete from student a where a.id in (1,2);(執行失敗)
select a.* from student a where a.id in (1,2);(執行成功)
相關推薦
mysql 的delete from 子查詢限制
1.使用mysql進行delete from操作時,若子查詢的 FROM 字句和更新/刪除物件使用同一張表,會出現錯誤。 mysql> DELETE FROM tab1 WHERE col1 = ( SELECT MAX( col1 ) FROM tab1 ); ERROR 1093 (HY000):
mysql update from 子查詢
這個破問題糾結了我好久,查了mysql的好多資料,最後還是在別人那裡得到結果,特此記錄一下,留個備份吧! mssql 子查詢更新 update log set uin= b.uin from log a,logs b where a.accountuin = b.a
MySQL 中 delete where in 語句的子查詢限制
場景一 delete from table1 where id = (select max(id) from table1 ); [Err] 1093 - You can’t specify target table 'table1 ’ for updat
MySQL 中 delete 語句的子查詢限制
場景一 delete from student where id = (select max(id) from student); [Err] 1093 - You can't specify target table 'student' for update in FROM clause 描述
Mysql from 子查詢問題? 隨筆
表結構 goods_id,goods_namefrom(*FROM`goods`WHERE1ORDERBYcat_idASC,goods_idDESC)astmpgroupbycat_id 上面的
mysql in型子查詢陷阱
秒級 tab lai sql 一對一 語句 lec 掃描 主鍵 現在有兩個表,table1和table2,table1有1千萬數據(id 主鍵索引),table2有三條數據(uid字段 3,5,7); select * from table1 where id in
mysql 資料操作 子查詢 帶EXISTS關鍵字的子查詢
帶EXISTS關鍵字的子查詢 EXISTS關字鍵字表示存在。 EXISTS 判斷某個sql語句的有沒有查到結果 有就返回真 true 否則返回假 False 如果條件成立 返回另外一條sql語句的返回結果 返回結果了 &nb
mysql 資料操作 子查詢 帶比較運算子的子查詢
帶比較運算子的子查詢 #比較運算子:=、!=、>、>=、<、<=、<> #查詢大於所有人平均年齡的員工名與年齡思路 先拿到所有人的平均年齡然後 再用另外一條sql語句 進行比較 拿所有員工的年齡 > 所有人的平均年齡
mysql update where子查詢實現方式
mysql的update的一些特點 1、更新的表不能在set和where中子查詢; 2、可以對多個表進行更新(sqlserver不行); 如:update ta a,tb b set a.Bid=b.id ,b.Aid=a.id; 3、update 後面可
對於MySQL中的子查詢的理解
每天記錄一下自己的心得體會,今天寫一下MySQL中的子查詢,個人感覺子查詢的難度比之前學的查詢都比較難,可能是語句太多吧,對於初學者的難度會有一點,反正我第一次接觸的時候是崩潰的,因為·程式碼有點多,因為內容比較多,所以小弟要是有講的不到位的,希望各位在下面給出
MYSQL多表子查詢練習
CREATE TABLE emp( empno INT, ename VARCHAR(50), job VARCHAR(50), mgr INT, hiredate DATE, sal DECIMAL(7,2), comm DECIM
MYSQL學習之子查詢(表連線查詢)以及許可權控制
在上一篇部落格裡我們詳細的介紹了MySQL語言的DDL(資料定義語言) 和 DML(資料操作語言),那麼在這篇部落格中我們要對上次的DML進行補充;同時我們要介紹DCL(資料控制語言); 子查詢 在學習子查詢的開始我們由這樣一個問題來引出; 我們現在有一張員工表emp,該表中包含
mysql 批量更新子查詢
報錯的sql : UPDATE pro_t_info as p SET Pro_Code = concat(Pro_Code,Pro_ID) WHERE Pro_ID in( select Pro_ID from pro_t_info where channel_sou
MySQL-SQL基礎-子查詢
#子查詢-某些情況下,當進行查詢的時候,需要的條件是另外一個select語句的結果,這個時候就要用到子查詢。用於子查詢的關鍵字主要包括:in、not in、=、!=、exists、not exists等等。#從emp表中查詢出所有部門在dept表中的所有記錄mysql> select *
Mysql中exists子查詢語句的使用,取出每組中最高的前n名的資訊
一、準備測試的表和資料 create table cat( id int not null auto_increment primary key, cat_id int, value int,
mysql關聯、子查詢索引優化
img mysq str 子查詢 exist exists 關聯 not null 1、驅動表:加索引不起作用,因為全表掃描。表1 left join 表2 ,此時表1是驅動表 被驅動表:給這個加索引。 關聯查詢 子查詢時 盡量不使用not in 或者not e
【mysql】關於子查詢的一個例子
假設表my_tbl包含三個欄位a,b,c;現在需要查詢表中列a的每個不同值下的列b為最小值的記錄量。 比如表記錄為: a b c 1 3 'cd' 2 3 'nhd' 1 5 'bg
MySQL EXPLAIN 獨立子查詢dependent subquery 優化示例
(本例建立表指令碼在文章底部) 對於mysql的出現的子查詢語句,大部分都是不太好的,尤其 in() 的子查詢語句,如下: select * from test.tabname where id in(select id from test.tabname2 where
MySQL不支援子查詢裡有limit解決辦法
這樣的語句是不能正確執行的。select * from table where id in (select id from table limit 10);但是,只要你再來一層就行。。如:select * from table where id in (select t.id
mysql 複雜sql子查詢的例項
在我們的實際專案中,有時候需要寫一下資料彙總和查詢,哪麼子查詢就必不可少。 比如我現在有三張表: lch_resource_attribute,idx_lch_resource_category,lch_resource_games 那麼我現在要查詢某個應用的子分類的話,用