【问题标题】:Mysql add a row to table, based on ID and field from other tableMysql 根据其他表的 ID 和字段向表中添加一行
【发布时间】:2014-07-16 17:02:31
【问题描述】:

我有一个名为 item_texts 的表

id|rec_id|text
-----------------
1 |21    |point(123
2 |21    |nothing
3 |91    |empty
4 |2     |point(123
5 |500   |point(123

还有一个叫做标签的表格

id|tag_id|rec_id
----------------------
1 |1     |34
2 |2     |34
3 |34    |21
4 |1     |2867

它们本质上都是查找表,第一个将文本分配给记录,第二个将标记分配给记录。

基本上对于每个具有像 POINT 这样的文本的项目,我想将一条记录添加到标签数据库中,该项目的记录 id 和标签 id 为 45..

所以它遍历 item_texts 表,查找带有点作为文本的项目,使用上面的示例 rec_id 21、2、500。然后将 id 为 45 的标签插入到带有它得到的记录 id 的标签表中从文本表。所以我最终得到了一个看起来像这样的标签表。

id|tag_id|rec_id
----------------------
1 |1     |34
2 |2     |34
3 |34    |21
4 |1     |2867
5 |45    |21
6 |45    |2
7 |45    |500

我可以选择表格中的项目

  SELECT * FROM `item_texts` WHERE `text` LIKE 'POINT%'

我可以进行插入查询, 插入标签值 ('', 45, 21) 我只是不确定如何将它们联系在一起,因此插入中的 21 来自与 select 语句中匹配的每个项目

【问题讨论】:

    标签: mysql insert


    【解决方案1】:

    以下应该这样做。

    INSERT INTO tags (tag_id,rec_id)
    SELECT 45, rec_id FROM `item_texts` WHERE `text` LIKE 'POINT%'
    

    【讨论】:

    • hmm 那没用,我的语法出错了。但是当我想插入它时,我无法弄清楚为什么它在您的查询中选择 45。我已经让我原来的问题更清楚了(我希望!!)
    • 实际上它现在正在工作。我删除了这些值,它似乎已经成功了。所以插入标签(tag_id,rec_id)。编辑你的答案,我会奖励:-D
    猜你喜欢
    • 2020-08-03
    • 2020-02-12
    • 1970-01-01
    • 1970-01-01
    • 2016-02-20
    • 2023-03-15
    • 1970-01-01
    • 2021-11-01
    • 1970-01-01
    相关资源
    最近更新 更多