簡體   English   中英

MySQL查詢選擇情況時為true插入

[英]Mysql query select case when true insert

有人知道如何在mysql中執行以下語法嗎?

沒有存儲過程,並且僅在單個查詢中


SELECT CASE
 WHEN COUNT(v.value) = 0 THEN (
  INSERT INTO tbl_v (fid, uid, VALUE)
  SELECT fid, 1 AS uid, 'xxxxxx' AS VALUE FROM tbl_f
  WHERE category = 'categoryname' AND NAME = 'somevalue'
 )WHEN v.value <> 'test' THEN (
  'update syntax here' /* will be similar like insert statement above */
 )ELSE (
  v.value
 )END
FROM shared_tbl_f f
INNER JOIN tbl_v v ON f.fid = v.fid
WHERE v.uid = 1 AND f.category = 'categoryname' AND f.name = 'somevalue'

注意:

有一個關於無主鍵tbl_v為獨特的參考tbl_v僅從列FID和列UID的組合。

因為tbl_v是一個映射表(那里沒有主鍵)-fid和uid是另一個表的外鍵。

您可以在插入語句中使用ON DUPLICATE KEY UPDATE子句。

INSERT INTO tbl_v (fid, uid, VALUE)
  SELECT fid, 1 AS uid, 'xxxxxx' AS VALUE FROM tbl_f
  WHERE category = 'categoryname' AND NAME = 'somevalue'
ON DUPLICATE KEY UPDATE
  value = ?;

為了使其正常工作,他們需要成為列的主鍵或唯一索引。 然后,重復的值將啟動語句的更新部分。

參考: http : //dev.mysql.com/doc/refman/5.5/en/insert-select.html

你不能,對不起。 您必須在存儲過程或應用程序邏輯中執行此操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM