php - 一种查询或快速执行sql语句的方法

标签 php mysql sql-server

我有一个主题标签表,如下所示:

TABLE: hashtags
hashtag_id      hashtag_name - UNIQUE
1                 apples
2                 oranges
3                 life

还有一个主题表,这些主题标签如下所示:

TABLE: topic_hashtags, unique index on hashtag_id and topic_id
topic_hashtag_id     hashtag_id    topic_id   
1                       1             2          
2                       3             18
3                       3             30
4                       2             15

我一直在尝试创建一个 MYSQL 语句(没有成功),它可以用伪代码执行以下操作:

INSERT INTO topic_hashtags (hashtag_id, topic_id) 
VALUES(SELECT LAST_INSERT_ID(INSERT INTO hashtags (hashtag_name) VALUES('somehashtag') 
ON DUPLICATE KEY SELECT hashtag_id FROM hashtags WHERE hashtag_name = 'somehashtag'), 'x');

基本上我需要获取主题标签名称的ID,如果不存在,则将其插入并获取最后插入的ID,然后使用这些值将其记录到hashtag_topics表中。问题是,ON DUPLICATE KEY 不允许您选择列。有没有其他方法可以做到这一点,或者使用多个查询更快? (虽然我感觉不是)。我真的不想这样做:

SELECT id from hashtags
if mysqli_num_rows($result) == 1):
use the id and insert
endif;
else
insert
mysqli_insert_id
use that id and insert

最佳答案

您无法在一个查询中完成所有这些操作。只需使用多个查询即可。它不会产生过多的负载,因为现代数据库和文件系统在缓存方面非常出色。

关于php - 一种查询或快速执行sql语句的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30408064/

相关文章:

c# - HttpClient POST 生成 GET 而不是

php - Facebook oAuth 需要 key 吗?

mysql - 尝试从 mysql 列获取特定值

mysql - 跨多个联接表的 SQL 查询

sql-server - 如何在VS 2015中调试存储过程?

php - 在另一个类方法中创建类对象给出 fatal error

PHP SQL 查询错误 - WHERE 子句中未知的数组列

mysql - 在 Rails + MySQL 中存储百分比

php - 按条件分组连接两个表

sql-server - 触发器会降低性能吗?插入和删除表?