我的MySql数据库中有以下结构:
1表称为报告,1表称为产品
我现在想根据选择的产品插入报告。我得到的错误如下:
错误代码:1242。子查询返回超过1行0.000秒
在我的上一个select语句中(仅选择,没有插入)我使用关键字解决了这个错误" IN"但在这种情况下,它不起作用。这是我到目前为止的查询(产生错误)
INSERT INTO reports (report_date, report_emploee, report_content, report_art, report_adressnummer)
VALUES(
NOW(),
'UpdateMaster',
'content',
'AutoUpdate' ,
(SELECT product.product_adressnummer
FROM product
WHERE product.product_name='testproduct'
AND product.product_version='2.50c'
AND product_updateDatum >= '2015-12-11'));
我尝试使用我的select语句创建一个数组,然后在插入到报告期间迭代它,但我没有在sql中获取它。所有在线信息都结合了sql和php来实现它。
如果我执行查询,它将如下所示:
report_date=today
report_emploee='UpdateMaster'
report_content='content'
report_art='AutoUpdate'
report_adressnummer=123,456,789,310,...
但它应该像这样执行:
report_date=today
report_emploee='UpdateMaster'
report_content='content'
report_art='AutoUpdate'
report_adressnummer=123
report_date=today
report_emploee='UpdateMaster'
report_content='content'
report_art='AutoUpdate'
report_adressnummer=456
report_date=today
report_emploee='UpdateMaster'
report_content='content'
report_art='AutoUpdate'
report_adressnummer=789
.......
您的解决方案影响了sql表中的0行。
如果我执行此查询:
SELECT contact.contact_vorname, contact.contact_nachname, contact.contact_eMail
FROM contact
WHERE contact.contact_adressnummer IN
(SELECT product.product_adressnummer
FROM product
WHERE product.product_name='toolstar®TestLX'
AND product.product_version='2.50c'
AND product_updateDatum >= '2015-12-11');
它返回8行,你的解决方案也应该影响8行,对吗?
答案 0 :(得分:0)
您遇到的问题是当您尝试插入
的结果时SELECT product.product_adressnummer
FROM product
WHERE product.product_name='testproduct'
AND product.product_version='2.50c'
AND product_updateDatum >= '2015-12-11'
进入你的桌子。由于这会返回多条记录,因此无法将其插入到一条记录所在的位置。 IN
无法解决问题,因为这不会阻止返回多个记录。
如果要为返回的每条记录插入记录,可以使用:
INSERT INTO
reports (report_date, report_emploee, report_content, report_art, report_adressnummer)
SELECT
NOW(),
'UpdateMaster',
'content',
'AutoUpdate' ,
product.product_adressnummer
FROM product
WHERE product.product_name='testproduct'
AND product.product_version='2.50c'
AND product_updateDatum >= '2015-12-11'