将数据从多个表插入表

时间:2018-12-03 07:13:15

标签: php mysql web

我在mysql数据库中有一个问题。

我想在从多个表中选择的表中插入一些数据。

这是我的查询

INSERT INTO dapot_dummy ('site_id','rnc_id','wbts_id','ip3g','vlan','status_vlan') 
VALUES (
(SELECT id FROM site WHERE id_site = 'TIM001')
,(SELECT id from rnc where rnc_name = 'RNC Timika-1')
,'117','10.250.46.85','3339',
(SELECT id from status_vlan where status_vlan = 'Metro E'))
我在上一个问题link中引用的

这是输出

  在分析过程中发现

4个错误。

     

预期逗号或右括号(位置“ SELECT”附近   100)意外令牌。 (在位置107的“ id”附近)   先前已解析。 (在位置163处的“从”附近)   语句类型。 (在位置163处的“从”附近)查询SQL:Dokumentasi

     

插入INTO dapot_dummy   ('site_id','rnc_id','wbts_id','ip3g','vlan','status_vlan')VALUES(   (从站点WHERE id_site ='TIM001'的选择ID),(从rnc选择的ID   其中rnc_name ='RNC Timika-1'),'117','10.250.46.85','3339',(SELECT   来自status_vlan的ID,其中status_vlan ='Metro E'))

     

MySQL menyatakan:Dokumentasi

     

1064-您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册以使用正确的语法

     

“ site_id”,“ rnc_id”,“ wbts_id”,“ ip3g”,“ vlan”,“ status_vlan”附近)   值(       (SELEC'位于第1行

如何解决?请帮助

2 个答案:

答案 0 :(得分:0)

即使子查询也必须具有有效的语法:

INSERT INTO dapot_dummy ('site_id','rnc_id','wbts_id','ip3g','vlan','status_vlan') 
VALUES (
    (SELECT 'TIM001' FROM site WHERE id_site = 'TIM001')
    ,(SELECT 'RNC Timika-1' from rnc where rnc_name = 'RNC Timika-1')
    ,'117','10.250.46.85','3339',
    (SELECT 'Metro E' from status_vlan where status_vlan = 'Metro E'))

希望我能正确击中桌子...

对数据库中的每个子查询进行基本测试,以确保它是有效的,并且可以获取所需的数据,然后组成广泛的完整查询。

答案 1 :(得分:0)

对于标记列名称,应使用“`”反引号代替引号:

INSERT INTO dapot_dummy (`site_id`,`rnc_id`,`wbts_id`,`ip3g`,`vlan`,`status_vlan`) 
VALUES (
    (SELECT id FROM site WHERE id_site = 'TIM001')
    ,(SELECT id FROM rnc WHERE rnc_name = 'RNC Timika-1')
    ,'117','10.250.46.85','3339',
    (SELECT id FROM status_vlan WHERE status_vlan = 'Metro E'))

我还建议将LIMIT 1添加到子查询