Php MySQL使用正则表达式更新/选择列

Php MySQL使用正则表达式更新/选择列,php,mysql,regex,Php,Mysql,Regex,我在互联网上搜索了一个答案,以选择每一个符合正则表达式模式的列。我没有找到,或者我找到了,但我不明白,因为我是数据库新手。下面是我尝试运行的sql: UPDATE `bartosz` SET 'd%%-%%-15'=1 (我知道这很糟糕) 我有如下专栏: ID | d1-1-15 | d2-1-15 | d3-1-15 | d4-1-15。。。(为期5年,每月和每天) 那么,有没有办法选择2015年的所有栏目? 我知道我可以在php中循环它,因此sql看起来像: UPDATE `bartosz

我在互联网上搜索了一个答案,以选择每一个符合正则表达式模式的列。我没有找到,或者我找到了,但我不明白,因为我是数据库新手。下面是我尝试运行的sql:

UPDATE `bartosz` SET 'd%%-%%-15'=1
(我知道这很糟糕)

我有如下专栏:
ID | d1-1-15 | d2-1-15 | d3-1-15 | d4-1-15
。。。(为期5年,每月和每天)

那么,有没有办法选择2015年的所有栏目? 我知道我可以在php中循环它,因此sql看起来像:

UPDATE `bartosz` SET 'd1-1-15'=1, 'd1-1-15'=1, 'd3-1-15'=1 [...]

<>但是这真的很长。

强烈地考虑改变你的方法。从技术上讲,可能有一个2000列的表,但您使用MySQL的方式不能充分利用可用功能,例如日期处理。下表结构将在大多数用例中提供更好的灵活性和伸缩性

查看具有key=>value属性的表

id   employee    date         units
1    james       2015-01-01   2
2    bob         2015-01-01   3
3    james       2015-01-02   6
4    bob         2015-01-02   4

有了上述功能,就可以编写查询,而无需插入数百个列名。它还可以轻松扩展到5年以上,而无需更改表格。使用列类型可以方便地按日期范围查询。还要学习如何使用es,以便在employee和date字段上放置唯一索引,以防止重复。

使用第二种方法,但不要使用单引号。您可能应该使用每个
id
和月份以及值存储一行数据。尝试将多列作为一个数组使用通常是一个坏主意。您可以导出表值,用php应用“逻辑”,然后导入它again@GordonLinoff这比每个月有多张桌子要好。该表是关于员工销售的产品。所以id是产品的编号,列是他们在那个里销售了多少产品day@MateuszSowi林斯基。听起来像是一个应该有三列的表(好吧,我会有其他的,比如createdate和一个自动递增的id)。@GordonLinoff你能告诉我哪三列吗?比如id、员工、日期、金额、产品名称?这就是我在“单位”栏中的意图。你可以称之为“产品”。还是我不明白你的用例?我的意思是我有很多产品。。。我应该像列:产品名称和列金额那样做吗?