这条 INSERT INTO xx SELECT 的 Mysql 语句,在 VALUE 段,如何取值?

查看 77|回复 3
作者:pppguest3962   
问题一、
直接写,是这样的:
INSERT INTO record_cc (`lname`, `mhid`, `type`, `mtname`, `reson`, `UpdateTime`) VALUES ('stb', '888', 1, 'ABC', '23#30', '2023-06-27 16:10:32');"
mtname 字段如果要从其它表取值,应该如何实现呢?
(如这个错误的语句,应该怎么修改?)
INSERT INTO record_cc (`lname`, `mhid`, `type`, `mtname`, `reson`, `UpdateTime`) VALUES ('stbl', '888', '1',
(SELECT `AU` FROM chresult WHERE chresult.mhid = '888' LIMIT 1),
, '23#30', NOW())
问题二,是否可以在以上 INSERT 语句的基础上完成这样的拼接?
(我简化了相关字段,想看看是怎么样完成拼装的...)
INSERT INTO record_cc (`reson`) VALUES (xxx);
这个 xxx 的值,是
SELECT `AU` FROM chresult WHERE chresult.mhid = '888' LIMIT 1
+
'#'
+
SELECT `BU` FROM chresult WHERE chresult.mhid = '888' LIMIT 1
这样组装起来的,
想看看大家是怎么样做,可以避免多次查询,然后还要在本地程序运算完再写 mysql ,
现在开销太大,看看能不能一句就把数据库怼完

insert, select, into, reson

jcc   
问题一,如果其他字段是固定的,你可以把它们按顺序拼接到 select 中,像这样
```sql
INSERT INTO record_cc (`lname`, `mhid`, `type`, `mtname`, `reson`, `UpdateTime`)
SELECT 'stbl', '888', '1', `AU`, '23#30', NOW()
FROM chresult
WHERE chresult.mhid = '888'
```
问题二,可以使用 concat() 函数做拼接
liprais   
建议看完文档再来问
1.就写个字面量的事
2.直接用 concat 完事
intersect   
INSERT INTO record_cc (`lname`, `mhid`, `type`, `mtname`, `reson`, `UpdateTime`)
select 'stbl', '888', '1',`AU`, concat(`AU`,'#' ,`BU`), NOW() FROM chresult WHERE chresult.mhid = '888' LIMIT 1
您需要登录后才可以回帖 登录 | 立即注册

返回顶部