mysql - 如何为 MySQL 编写一条 SQL 语句来检查值,如果为真则执行 INSERT?

标签 mysql sql select insert

我有以下声明:

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)

如果不了解更多关于此脚本的目标,就很难获得更精确的结果。

关于mysql - 如何为 MySQL 编写一条 SQL 语句来检查值,如果为真则执行 INSERT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20475063/

相关文章:

MySQL 显然无法区分字符串

sql - oracle 中的合并语句帮助

Mysql日期功能不工作少于

MySQL:如何将多个查询组合成一个使用具有不同条件的同一张表的查询?

PHP & MySQL : Repeating entries problem - Need each entry to show up only once but they repeat

iphone - 如何使用sql查询获取特定项目项目的总工作时间(可能重复的外键)

mysql - 在 case end 命令中使用集合

mysql - 如何查询关系表中的所有结果?

mysql : Get comma delimited Output

mysql - 通过PHPmyadmin导入MySQL时出错