以下の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 は別のテーブルからの外部キーです。