如何在已包含外键的表中添加数据

时间:2015-03-23 22:52:34

标签: mysql sql phpmyadmin

我正在尝试在phpMyadmin中创建一个允许我在我的产品表中插入新行数据的查询,而且由于外键约束,我很难这样做。

我已经研究了这个问题很长一段时间了,我认为我的语法正确,但我仍然收到一条通用消息,说我的语法存在问题:

  

1064 - 您的SQL语法出错;检查与MySQL服务器版本对应的手册,以获得正确的语法   靠近'British Bus Model',(SELECT productLine FROM productlines   产品'在第3行

以下是我正在使用的代码:

INSERT INTO products (productCode, productName, productLine, productScale, productVendor, productDescription, quantityInStock, buyPrice, MSRP)

VALUES (  ‘S72_3213’ , ‘Double-Decker British Bus Model’, 
( SELECT productLine 
FROM productlines 
WHERE productLine = ‘Double-Decker Buses’)  , 1:33 ,  ‘Classic Bus Models’ , ‘testing’ ,  150,  50.00 ,  90.00  ); 

我基本上是在尝试为产品输入新数据,但productLine应该从productlines表中提取。关于我的语法错误的任何建议将不胜感激。谢谢!!

3 个答案:

答案 0 :(得分:0)

SELECT A FROM TBL WHERE A='xxx'

这是不好的SQL,没有任何意义,这是第一个问题。 另一个是1:33 ....我不明白它是什么。 这是我的建议

INSERT INTO products (productCode, productName, productLine, productScale, productVendor, productDescription, quantityInStock, buyPrice, MSRP)
    SELECT ‘S72_3213’ , ‘Double-Decker British Bus Model’, productLine, 1:33 ,  ‘Classic Bus Models’ , ‘testing’ ,  150,  50.00 ,  90.00 FROM productlines 
            WHERE OTHER_VAR = ‘Double-Decker Buses’

答案 1 :(得分:0)

除了@Mike Sherrill指出的其他问题之外,你得到语法错误的原因是因为你的单引号不是实际的单引号。

Here is a SQLFiddle进行并排比较。顶部查询使用查询中的单引号,这会导致整个小提琴无法运行,因为无法解析SQL。底部查询使用真正的单引号,如果您注释掉或删除顶部查询,它将正常运行。

将有问题的单引号(‘’)更改为适合SQL的单引号(''),您应该能够解决此语法错误。

答案 2 :(得分:0)

将您的查询更改为

INSERT INTO products 
  (productCode, productName, productLine, productScale, productVendor, productDescription, quantityInStock, buyPrice, MSRP)
VALUES 
  ('S72_3213', 'Double-Decker British Bus Model', 'Double-Decker Buses', '1:33', 'Classic Bus Models', 'testing', 150, 50.00, 90.00);

你应该好好去。您的引号错误,1:33附近没有引号,也没有必要的子选择。

如果您的查询有效,您可以考虑使用" productlines_id"而不是产品线的名称(并且,取决于您的数据库结构a" productvendor_id")