0

我想在名为 acname 的字段中的表 glmast 中插入一个值。

我使用的条件如下

g.gl_id = p.gl_id AND p.pl_id='$pdidedit' with g as glmast and p as packlist

我尝试加入,并尝试下面的代码..

INSERT INTO glmast (acname)
VALUES
('$glidnew') SELECT glmast.acname WHERE glmast.gl_id = packlist.gl_id AND packlist='$pdidedit'";

任何帮助都非常感谢..谢谢大家..

4

3 回答 3

2

你可以像这样写插入

INSERT INTO glmast (acname) VALUES ('$glidnew');

或者

INSERT INTO glmast (acname)
SELECT glmast.acname from glmast,packlist 
  WHERE glmast.gl_id = packlist.gl_id
    AND packlist.gl_id = '$pdidedit'";

请记住,在第二个示例中,当 select 返回多行时,可能会有多个插入。

于 2013-05-12T19:27:39.787 回答
1

我认为这可能是你想要做的:

INSERT INTO glmast(gl_id, acname)
SELECT '$glidnew', glmast.acname
FROM glmast JOIN packlist ON glmast.gl_id = packlist.gl_id
WHERE packlist.pl_id='$pdidedit'

你一直说插入,但我很确定你的意思是更新:

UPDATE glmast g
JOIN packlist p ON g.gl_id = p.gl_id
SET g.acname = '$glidnew'
WHERE p.pl_id = '$pdidedit'

或者也许就是这样:

INSERT INTO glmast (acname, col1, col2, col3, ...)
SELECT '$glidnew', g.col1, g.col2, g.col3, ...
FROM glmast g
JOIN packlist p ON g.gl_id = p.gl_id
WHERE p.pl_id = '$pdidedit'
于 2013-05-12T19:38:28.427 回答
0

我相信这是您想要实现的目标

INSERT INTO glmast (acname) VALUES('$glidnew')
WHERE (
    SELECT glmast.acname FROM glmast GM
    JOIN packlist PL ON (PL.gl_id = GM.gl_id)
    WHERE PL.pl_id='$pdidedit'
)

但该语法在 MySQL 中无效。您必须先运行 SELECT 语句,然后根据 SELECT-query 给出的结果集 INSERT 到 glmast 表中:

步骤1:

SELECT glmast.acname FROM glmast GM
JOIN packlist PL ON (PL.gl_id = GM.gl_id)
WHERE PL.pl_id='$pdidedit'

第2步:

INSERT INTO glmast (acname) VALUES({values from Step1})

在某种程度上,您可以说它$glidnew代表了 Step1 中的值。

于 2013-05-12T20:05:04.767 回答