繁体   English   中英

带有加载数据Infile的子查询

[英]Subqueries with Load Data Infile

我遇到了特定子查询的问题:

LOAD DATA INFILE 'some_address' INTO TABLE 'some_table' 
FIELDS TERMINATED BY 'field_terminate' ENCLOSED BY '"' 
ESCAPED BY '\\' ('fieldX', 'fieldY'....'fieldZ') 
SET fieldZ= (SELECT Id FROM another_table WHERE Name = fieldZ)

我基本上想要实现的是将文件中的字段替换为相应的ID的影响,该ID在执行查询时位于另一个表中。 这甚至可能吗?

提前感谢一堆。 我看过整个互联网。 到目前为止没有运气..

哦,使用上面的查询我得到一个错误,基本上告诉我子查询不是标量。 很明显,子查询不是为了插入每一行而执行,而是为每一行的所有fieldZ执行它们(因此它返回多个ID)

要在SET中使用列的数据,您必须将其放在变量中:

LOAD DATA INFILE 'some_address' INTO TABLE 'some_table' 
    FIELDS
        TERMINATED BY 'field_terminate'
        ENCLOSED BY '"' 
        ESCAPED BY '\\'
('fieldX', 'fieldY', ..., @fieldZ) 
SET fieldZ = (SELECT Id FROM another_table WHERE Name = @fieldZ)

这是假设another_table.Name是唯一的。 如果没有,您将需要强制子查询返回1行,例如通过添加LIMIT子句:

SET fieldZ = (SELECT Id FROM another_table WHERE Name = @fieldZ LIMIT 1)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM