gpt4 book ai didi

mysql - codeigniter 和 mysql 用户定义的变量不起作用

转载 作者:行者123 更新时间:2023-11-29 13:45:37 25 4
gpt4 key购买 nike

CodeIgniter版本:2.1.3
MySQL版本:5.5.30
MySQL 引擎:MyISAM

查询:

$query = "INSERT INTO new_table
(
user_id,
cut_off_pay,
total_days,
rate_per_day,
rate_per_hour,
)
(
SELECT
u.id,
@cut_off_pay := (u.current_salary / 2) ,
@total_days := 10,
@rate_per_day := (@cut_off_pay / @total_days),
@rate_per_hour := (@rate_per_day / 8)
FROM attendance a
LEFT JOIN users u
ON a.user_id = u.id
WHERE a.user_id = u.id
GROUP BY a.user_id
)";
$this->db->query($query);

用户定义的变量(@cut_off_pay、@total_days 等)不起作用,它返回 0/NULL 值

最佳答案

恕我直言

  1. 为此您不需要任何用户变量
  2. 在您的情况下,不需要使用 WHERE 子句来重复连接条件
  3. 您甚至不需要将 usersattendance 表连接起来,因为您不使用其中的任何值,也不需要选择 LEFT JOIN 和位于其左侧的出勤 表非常值得怀疑

话虽如此,也可以

$query = "INSERT INTO new_table
(
user_id,
cut_off_pay,
total_days,
rate_per_day,
rate_per_hour
)
SELECT u.id,
u.current_salary / 2 cut_off_pay,
10 total_days,
u.current_salary / 2 / 10 rate_per_day,
u.current_salary / 2 / 10 / 8 rate_per_hour
FROM attendance a LEFT JOIN users u
ON a.user_id = u.id
GROUP BY a.user_id";

自从插入它们后,您甚至不需要为选择中的派生列提供别名,但这只会提高可读性,并且您始终可以单独使用该选择,例如用于测试目的

或者简单地

$query = "INSERT INTO new_table
(
user_id,
cut_off_pay,
total_days,
rate_per_day,
rate_per_hour
)
SELECT id,
current_salary / 2 cut_off_pay,
10 total_days,
current_salary / 2 / 10 rate_per_day,
current_salary / 2 / 10 / 8 rate_per_hour
FROM users";

关于mysql - codeigniter 和 mysql 用户定义的变量不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17461389/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com