【发布时间】:2018-02-27 05:12:10
【问题描述】:
我已经搜索过是否存在相同的问题,但我找不到这个或教程的任何答案。
如果在 MySQL (product_table) 中有一个以 product_id、product_name、time_created、reference_code、product_color、product_type、product_price 开头的 8 列的数据库表987654330@.
我只是想知道是否可以根据它周围的字段生成reference_code,例如product_name,time_created。
那么让我们说:
product_name = Hat
time_created = 2017-09-18 17:08:21
product_color = red
我希望 reference_code(reference_code) 看起来像这样,因为示例可以是以下任何一种,它应该只是基于产品自身的详细信息。
reference_code = Hat2017-09-18red
reference_code = Hat20170918red
reference_code = Hat17:08:21red
任何帮助或描述链接将不胜感激。
【问题讨论】:
-
是的,当您在表上运行选择查询时,只需使用 + 连接字段。您可以在 SQL 中执行此操作,或者在 PHP 对象层中的某个位置执行此操作,如果它使事情更灵活的话。无需将值存储在数据库中,因为它是可导出的值。顺便说一句,从设计/用户体验的角度来看,如果您向用户展示它,就好像它是一个唯一的参考编号(它不是!),确保重复是不可能的(例如相同的产品、日期和颜色)并且这些字段以后不能修改(因此引用会发生变化,这会令人困惑)。
-
在 mysql 5.7.6 + 中,您还可以使用指定的列值创建 virtual generated column。例如:
ALTER TABLE product_table ADD COLUMN reference_code VARCHAR(255) AS (CONCAT(product_name, DATE(time_created), product_color)) VIRTUAL AFTER product_color;。将输出Hat2017-09-18red。 -
谢谢你们,有道理,我同意,我也会检查这个解决方案。谢谢