我有以下语句:
SELECT pinpicsid
FROM user_collection
JOIN pin ON user_collection.pinid = pin.id
WHERE username = 'myuser'
AND pinpicsid = '98802';
如果它返回空白(或没有行),我想执行这样的INSERT:
SELECT id INTO @id FROM pin WHERE pinpicsid = '98802';
INSERT INTO user_collection (pinid, username)
VALUES (@id, 'ethanwa');
有没有任何可能的方法将所有这些合并为一个单独的语句?
为什么不直接插入。。。选择?
INSERT INTO user_collection (pinid, username)
SELECT id, 'ethanwa' FROM pin WHERE pinpicsid = '98802';
此处的语法:http://dev.mysql.com/doc/refman/5.6/en/insert-select.html
如果你需要强制执行pinid的唯一性,但仍然想更新用户名,你可以这样做:
INSERT INTO user_collection (pinid, username)
SELECT id, 'ethanwa' FROM pin WHERE pinpicsid = '98802'
ON DUPLICATE KEY UPDATE username = VALUES(username)
如果不了解更多关于这个脚本的目标,就很难获得更精确的目标。