首页 > 解决方案 > 如何抑制变量行计算所需的 Mariadb 变量,而不是插入

问题描述

我有一个使用 Select 填充表的 SQL 插入语句。

一切都很好,直到我不得不将站点名称与邮政编码连接以进行处理。

SQL 需要为每个站点名称/邮政编码组合返回一个row_id,但我不想将此组合插入表中,也不想在插入表中创建一个新列 - 只有站点名称。

我看不出如何实现这一点 - 代码片段如下。

SET @row_number  = 0; 
INSERT INTO mis.temp_site_extraction_line_costing
(row_id, `Site Company Name`,.........)
select 
@row_number :=
CASE 
    WHEN @site_name=concat(m1.`Site Company Name`,m1.sitepostcode) then @row_number+1
    ELSE 1
END as rowid,
@site_name :=concat(m1.`Site Company Name`, m1.`sitepostcode`),
m1.`Site Company Name` as site_company_name,
...

谢谢

标签: sqlvariablesmariadbinsert-into

解决方案


将您的移动SELECT到子查询中。也就是说,而不是

SELECT @row_number := ..., other_stuff

SELECT other_stuff
    FROM (
        SELECT @row_number := ..., other_stuff
         ) AS x

推荐阅读