mysql - MySQL:将值从案例表达式插入表中
问题描述
下面我运行了一个程序,将一些值插入到我的shipin 表中。通常我的 Reference 2 字段是静态的,但我需要它是可变的。但是,我从中提取的字段 'shipinimport'.'accountID' 需要返回与已经存在的结果不同的结果。如您所见,这就是 case 表达式出现的地方。
我的问题是,这实际上并没有将返回的结果插入到我的shipin 表中。我可以查询它并获得我正在寻找的结果,但我需要它将它与我的过程中的其余值一起插入到表中。我尝试在我的程序中移动表达式,认为这可能是事件顺序问题,但这不起作用。那么有没有办法做到这一点?任何帮助或指导将不胜感激。
CREATE DEFINER=`root`@`%` PROCEDURE `SubjectDetailsExportToShipIn_hs`()
BEGIN
INSERT INTO ShipInImport
SELECT *
FROM dpi_timestone.SubjectDetailsView_hs;
INSERT INTO `timestone`.`shipin`
(`REFERENCE_1`,
`REFERENCE_2`,
`date_loaded`,
`location`)
SELECT
`shipinimport`.`SubjectKey`, --Reference 1
`shipinimport`.`AccountID`, --Reference 2
Now(), --DateLoaded
'DPI'--location
FROM `dpi_timestone`.`shipinimport`;
Select Case AccountID
When 16 Then 191
When 1 Then 125
End
FROM `dpi_timestone`.`shipinimport`;
End
解决方案
如果您只是想将这些 AccountID 值替换为“参考 2”;将 CASE 放在您的第一个选择中,如下所示:
SELECT
`shipinimport`.`SubjectKey`, --Reference 1
CASE `shipinimport`.`AccountID`
WHEN 16 THEN 191
WHEN 1 THEN 125
ELSE `shipinimport`.`AccountID`
END, --Reference 2
Now(), --DateLoaded
'DPI'--location
FROM `dpi_timestone`.`shipinimport`;
如果不是这种情况,您的代码不会使您期望 191 和 125 结束的地方变得明显。
推荐阅读
- java - 应用程序无法转换为 androidx.appcompat.app.AppCompatActivity
- ruby-on-rails - link_to 硬编码的绝对 url,在 rails 中没有 http
- php - Xdebug 在远程主机上运行:无法连接回客户端 -> 超时
- java - Java:使用 super 调用时隐藏的超类字段的值是多少?
- google-apps-script - Google Sheet App Script - 如何仅设置唯一值
- reactjs - axios 响应显示状态码 200 但没有响应数据
- java - 线程执行 run() 方法两次
- regex - 从末尾替换字符串中出现的 n 个字符
- c++ - 当索引位于末尾且为空数组时,将元素插入数组的问题
- hibernate - hibernate5中如何使用DatabaseInformation、TableInformation和ColumnInformation来确定列的大小?