M2014是数据库表格中的文本字段。
此语句正常工作(返回计数= 368)
SELECT count(*) FROM arealist WHERE M2014 = 'Yes'
但是,我对这个语句有问题(返回count = 0)我已经改变了 是concat
SELECT count(*) FROM arealist WHERE concat('M','2014') = 'Yes'
可能是什么原因和解决方案?
答案 0 :(得分:2)
您正在比较第二个SELECT语句中的两个字符串。第二个语句是附加两个字符串“M”和“2014”,这导致查询将“M2014”与“是”两个字符串进行比较,而不是列的值。做出这样的陈述:
SELECT COUNT(*) 来自AreaList 在哪里M2014 = CONCAT('Y','es')
该语句将返回368行。你最终试图用这个陈述做什么?
答案 1 :(得分:0)
您无法为MySQL中的where子句生成动态列名。有相当多的Stack Overflow文章。通常,我会安排我的数据,以便与行关联的某种日期或时间戳,而不是使用特定于日期的列。 (我假设M2014与2014年有关)。以这种方式排列时,您可以根据日期要求选择所需的内容。
也就是说,如果您的数据模型是固定的,那么您最好的选择是使用另一种语言C#,python等,以动态创建您需要的列名,然后将整个查询发送到MySQL。或者,您可以编写一系列SQL语句,一个用于您感兴趣的日期列。
答案 2 :(得分:0)
你可以在php那样做
$year = 2014;
SELECT count(*) FROM arealist
WHERE M$year = 'Yes'