我在互联网上搜索了选择与正则表达式模式匹配的每一列的答案。我没有找到,或者也许我找到了,但我不明白,因为我是数据库新手。这是我试图运行的 sql:
UPDATE `bartosz` SET 'd%%-%%-15'=1
(我知道这样不好)
我有这样的专栏:
ID | 15 年 1 月 1 日 | d2-1-15 | d2-1-15 | d3-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 的方式并未充分利用可用功能(例如 DATE 处理)。在大多数用例中,下表结构将提供更好的灵活性和扩展性。
查看具有 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 年以上,而无需更改表。使用DATE列类型,以便您可以轻松地按日期范围查询。另请学习如何使用INDEX es,这样您就可以在员工和日期字段上放置唯一索引以防止重复。
关于php - MySQL 使用 RegEx 更新/选择列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32809464/