【问题标题】:# 1064 - Syntax error near 'SELECT (M_ID FROM matieres WHERE LABEL =' Anglais'))' on line 2 [closed]#1064 - 第 2 行的“SELECT (M_ID FROM matieres WHERE LABEL ='Anglais'))' 附近的语法错误 [关闭]
【发布时间】:2020-03-19 10:01:19
【问题描述】:

我想要那个

INSERT INTO utilisateurs (U_ID, NAME, SURNAME, LOGIN, PASSWORD, TYPE, M_ID) VALUES ('4', 't', 't', 't', 't', 'Formateur', SELECT(M_ID FROM matieres WHERE LABEL = 'Anglais'))

但是错了

【问题讨论】:

  • 子查询是否总是准确返回 1 行?如果它返回 0 行或 2 行,您期望会发生什么?

标签: php mysql sql select sql-insert


【解决方案1】:

改用 INSERT SELECT:

INSERT INTO utilisateurs (U_ID, NAME, SURNAME, LOGIN, PASSWORD, TYPE, M_ID)
SELECT 4, 't', 't', 't', 't', 'Formateur', M_ID 
FROM matieres 
WHERE LABEL = 'Anglais'

将插入与 SELECT 返回的行数相同的行数。

【讨论】:

    【解决方案2】:

    SELECT 关键字后面有多余的括号,它们不应该存在。

    如果子查询总是返回至少一行,我发现这样做更清楚:

    INSERT INTO utilisateurs (U_ID, NAME, SURNAME, LOGIN, PASSWORD, TYPE, M_ID)
    SELECT '4', 't', 't', 't', 't', 'Formateur', M_ID 
    FROM matieres 
    WHERE LABEL = 'Anglais'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-12
      • 2019-03-18
      相关资源
      最近更新 更多