php - mysql select 相关术语

标签 php mysql

我有一个字典术语表,现在我想创建另一个表来保存“主要”术语的 ID 和定义中包含“主要”术语名称的相关术语的 ID -

table: terms 
| id | name | definition |


Table: related 
| term_id | related_term_id |

在 PHP 中创建 INSERT 语句非常容易:

$result = mysql_query("SELECT * FROM terms");
while ($row = mysql_fetch_array($result)) {
    $name = $row['name'];
    $result2 = mysql_query("SELECT id,name FROM terms WHERE description LIKE \"%$name%\" AND id!=".$row['id']);

    while ($row2 = mysql_fetch_array($result2)) {
        echo "INSERT INTO related(term_id,related_term_id) VALUES(".$row['id'].",".$row2['id'].");";
    }
}

但是,由于我对 MySQL 没有太多经验,所以我想知道这是否可以纯粹在 SQL 中完成 - 比如使用 INSERT-SELECT 语句?

谢谢!

最佳答案

INSERT INTO related (term_id, related_term_id)
SELECT a.id as term_id, b.id AS related_term_id
FROM terms a, terms b
WHERE a.id != b.id
AND b.description LIKE CONCAT('%', b.name, '%')

关于php - mysql select 相关术语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6814927/

相关文章:

mysql - SQL Alter table 语句包含数据数组的列

php - 使用php向多个用户发送邮件

MySQL:一对多表上的条件查询

php - Yii2 ActiveRecord 模型最佳实践

php - Propel PostgreSQL 迁移找不到适配器

php - 组织帖子数组

mysql - 只用一张 table 检查可用时间?

php - 删除数据库表中的特定行并生成html表

php - 将 JSON 解析为 JSONArray

php - 不同和组 SQL 查询