我遇到了MySQL WHERE
子句的问题。我想我知道问题是什么,而不是如何修复它。
我有一个包含学生时间表信息的数据库,我将其与包含学生信息的表格进行匹配。学生信息已从CSV(utf-8)文件导入数据库,其他信息仅通过“正常”INSERT
查询插入数据库。
WHERE
子句很简单,如下所示:
WHERE gpu_timetable.cls_name =
(SELECT cls_name FROM gpu_students WHERE std_number = 123441 LIMIT 1)
它将时间表中的cls_name(类名)与学生表中的类名进行匹配。就像我说的那样,数据来自不同的来源,但看起来是一样的。例如,当我删除SELECT查询并使用此字符串('LV6A')时,代码可以正常工作。
两个字段的排序规则是* utf8_general_ci *,我也尝试了TRIM()
但没有成功,将=
替换为LIKE
也是一样。
导入学生信息时我做错了吗?还是有其他类似于TRIM()
的功能可以解决这个奇怪的问题?
答案 0 :(得分:0)
您的简化查询必须是:
SELECT * FROM gpu_timetable INNER JOIN gpu_students ON gpu_timetable.cls_name = gpu_students.cls_name WHERE gpu_students.std_number = 123441
在使用JOIN查询时,您应始终拥有tablename.fieldname
。