使用两个 select 语句时无法插入单独的列

Can't Insert into seperate column while using two select statements

import mysql.connector
mydb = mysql.connector.connect( host="localhost", user="root", passwd="", database="resume")
cursor = mydb.cursor()
a = "SELECT ENTITY FROM annotate1 WHERE LABEL = 'NAME' GROUP BY PAGE"
cursor.execute(a)
records = cursor.fetchall()
for i in records:
    name = i[0]
    query = "INSERT INTO sorting_report(NAME) VALUES (%s)"
    parameters = (str(name),)
    cursor.execute(query, parameters)
    mydb.commit()
print("Name inserted")

b = "SELECT ENTITY FROM annotate1 WHERE LABEL = 'ADDRESS' GROUP BY PAGE"
cursor1 = mydb.cursor()
cursor1.execute(b)
records1 = cursor1.fetchall()
for i in records:
    address = i[0]
    query = "INSERT INTO sorting_report(ADDRESS) VALUES (%s)"
    parameters = (str(address),)
    cursor.execute(query, parameters)
    mydb.commit()
print("Address inserted")

TABLE:

姓名:Jance C hiatt、Sam、Brook、纽约、伦敦 地址 : NULL,NULL,NULL,NULL

NewYork 和 London 应该是地址栏,但它显示在名称本身上

这里地址不是来自数据库的单独列。请告诉我我面临的问题

每个 insert 语句都会创建新行,因此您不能指望您的查询会自动对齐同一行上的相关值。

我怀疑您的 EAV 模型看起来像这样:

page     label   entity
+-------+-------+--------
page1    NAME    foo
page1    ADDRESS bar

并且您想在目标 table 中旋转它,如下所示:

page    name    address
+------+-------+--------
page1   foo     bar

您可以使用条件聚合在一条语句中执行此操作:

insert into sorting_report(page, name, address)
select page,
    max(case when label = 'NAME'    then entity end),
    max(case when label = 'ADDRESS' then entity end)
from annotate1 
group by page