在sql中添加新行

Posted

技术标签:

【中文标题】在sql中添加新行【英文标题】:Adding new rows in sql 【发布时间】:2015-07-23 08:28:51 【问题描述】:

我的数据库中有这两个表:

table_A:                 table_B:                  

id    user   grade       id    user      date            
1     Mike   9.5         1     Mike      9:05    
2     Dan    absent      2     Dan       7:40    
3     Tom    9.4         3     Tom       3:20
4     Lina   7.4         4     Lina      7:40
                         5     Cynthia   5:39
                         6     Sam       4:50

我正在使用这个 SQL 查询来检测 table_B 中的哪些用户在 table_A 中不存在,并选择那些用户(不存在于表 A 中)的 ID:

SELECT table_B.id FROM table_B WHERE table_B.id NOT IN (SELECT table_A.id FROM table_A);

我正在使用这个 php 脚本将 id 放入变量 $not 中:

 $sql=" SELECT table_B.id FROM table_B WHERE table_B.id NOT IN (SELECT table_A.id FROM table_A)";
            $result = mysqli_query($con,$sql);
            if (!$result) 
                printf("Error: %s\n", mysqli_error($con));
                exit();
            
            while($row = mysqli_fetch_array($result))
                 $not=$row[0];
            

问题是,对于那些不存在找到的查询的用户,我只想提取他们的姓名和 ID(不包括日期),并将其插入 table_A 并获得一个空等级。有帮助吗?

【问题讨论】:

您不应该在两个表中都存储user。存储一次数据。 【参考方案1】:
Insert into table_A(user,id,grade)
SELECT table_B.id,table_B.user,'' FROM table_B 
WHERE table_B.id NOT IN (SELECT table_A.id FROM table_A);

【讨论】:

【参考方案2】:

您可以使用 INSERT INTO SELECT。 https://dev.mysql.com/doc/refman/5.0/en/insert-select.html

您的查询将如下所示:

INSERT INTO `table_A` (`id`, `user`)
SELECT `id`, `name` FROM `table_B` 
WHERE table_B.id NOT IN (SELECT table_A.id FROM table_A);

【讨论】:

【参考方案3】:

试试这个,

  Insert into table_A(id, user, '') SELECT b.id, b.user FROM table_B b WHERE b.id NOT IN (SELECT a.id FROM table_A a); 

【讨论】:

以上是关于在sql中添加新行的主要内容,如果未能解决你的问题,请参考以下文章

Sql 触发器在表更新时添加新行

在 PySpark DataFrame 中添加汇总输出作为新行

复制当前行,修改它并在火花中添加一个新行

有啥方法可以自动将新行添加到 sql 中的联结表中?

在选择列时添加新行 # 取决于循环 #

JqG​​rid向数据库添加新行