MYSQL 多表查詢、刪除、更新一些sql語句

來源:互聯網
上載者:User

 代碼如下 複製代碼

SELECT cat.`name` , class.`title`
FROM `cat` , `class`
WHERE cat.`id` = class.`cat`
AND cat.`id` =2
LIMIT 0 , 30

DELETE cat, class FROM cat, class WHERE cat.`id`=class.`cat` AND cat.`id`=1


多表更新
在 MySQL 3.23 中,你可以使用 LIMIT # 來確保只有給定的記錄行數目被更改。

如果一個 ORDER BY 子句被使用(從 MySQL 4.0.0 開始支援),記錄行將以指定的次序被更新。這實際上只有連同 LIMIT 一起才有用。

從 MySQL 4.0.4 開始,你也可以執行一個包含多個表的 UPDATE 的操作:

 代碼如下 複製代碼

UPDATE items,month SET items.price=month.price
WHERE items.id=month.id;

注意:多表 UPDATE 不可以使用 ORDER BY 或 LIMIT。

多表刪除
第一個多表刪除格式從 MySQL 4.0.0 開始被支援。第二個多表刪除格式從 MySQL 4.0.2 開始被支援。

僅僅在 FROM 或 USING 子句 之前 列出的表中的匹配記錄行被刪除。效果就是,你要以從多個表中同時刪除記錄行,並且同樣可以有其它的表用於檢索。

在表名後的 .* 僅僅是為了相容 Access:

 代碼如下 複製代碼

DELETE t1,t2 FROM t1,t2,t3 WHERE t1.id=t2.id AND t2.id=t3.id

or

DELETE FROM t1,t2 USING t1,t2,t3 WHERE t1.id=t2.id AND t2.id=t3.id

在上面的情況下,我們僅僅從 t1 和 t2 表中刪除匹配的記錄行。

如果一個 ORDER BY 子句被使用(從 MySQL 4.0.0 開始支援), 記錄行將以指定的次序刪除。這實際上只有連同 LIMIT 一起才有用。樣本如下:

 代碼如下 複製代碼

DELETE FROM somelog
WHERE user = ‘jcole’
ORDER BY timestamp
LIMIT 1

這將刪除匹配 WHERE 子句的,並且最早被插入(通過 timestamp 來確定)的記錄行。

DELETE 語句的LIMIT rows 選項是 MySQL 特有的,它告訴伺服器在控制權被返回到用戶端之前可被刪除的最大記錄行數目。這可以用來確保一個特定的 DELETE 命令不會佔用太長的時間。你可以簡單地重複使用 DELETE 命令,直到被影響的記錄行數目小於 LIMIT 值。

從 MySQL 4.0 開始,在 DELETE 語句中可以指定多個表,用以從一個表中刪除依賴於多表中的特殊情況的記錄行。然而,在一個多表刪除中,不能使用 ORDER BY 或 LIMIT。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.