【发布时间】:2021-02-09 21:14:06
【问题描述】:
我想从我的 PHP API 中获得与从 MySQL Workbench 调用相同的 SQL 查询时相同的结果。 我在 MySQL Workbench 中得到的结果与在使用 CASE 语句时从 PHP API 调用它时得到的结果不同。这是 SQL:
@row_number:=CASE
WHEN @row_number IS NULL THEN
1
WHEN @dateTime = scrm_lessons_id_lesson THEN
@row_number + 0
WHEN @dateTime != scrm_lessons_id_lesson THEN
@row_number + 1
END AS lesson_number,
@dateTime:= scrm_lessons_id_lesson AS 'LessonID'
在 Workbench 中,这给了我想要的结果,即:
lesson_number LessonID
1 17282
2 17314
2 17314
2 17314
2 17314
2 17314
2 17314
2 17314
2 17314
3 17349
3 17349
3 17349
3 17349
3 17349
3 17349
3 17349
3 17349
4 17386
4 17386
4 17386
4 17386
4 17386
5 17416
5 17416
即,具有新 LessonID 值的每一行都会增加 course_number 的值。
然而,在 PHP 中,lesson_number 的值始终为 1(因此每次都必须命中 WHEN @row_number IS NULL)。
语句是相同的,复制和粘贴,并在同一台服务器上运行。一个是从远程连接到服务器的 MySQL Workbench 调用的,另一个是从服务器上用 PHP 编写的 API 调用的。
【问题讨论】:
-
你运行的是哪个版本的 MySQL?
-
请向我们展示整个查询,而不仅仅是其中的一部分。
-
这可能是由于变量范围的问题 -
@row_number是 会话变量,当从 PHP 运行时它的行为可能与您预期的不同跨度>
标签: php mysql sql case mysql-workbench