[英]Mysql query select case when true insert
沒有存儲過程,並且僅在單個查詢中
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.