0 0

坑爹表varchar字段值排序!!!!拜托了!!!5

 

CREATE TABLE `discount_inf` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) NOT NULL,
  `content` varchar(256) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3458 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records 
-- ----------------------------
INSERT INTO `discount_inf` VALUES ('2134', 'kunsy', '菜品9.5折不开发票,酒水除外');
INSERT INTO `discount_inf` VALUES ('2345', '测试2', '现金优惠劵,满100抵10元代金劵或9折优惠(酒水除外)');
INSERT INTO `discount_inf` VALUES ('3453', '测试1', '菜品8.5折,其它均无折扣');
INSERT INTO `discount_inf` VALUES ('3455', '测试3', '开票菜品9.5折不开票菜品8折');
INSERT INTO `discount_inf` VALUES ('3456', 'anges', '不开发票,菜品9折');
INSERT INTO `discount_inf` VALUES ('3458', 'blueking', '现金优惠劵,满100抵10元代金劵');
INSERT INTO `discount_inf` VALUES ('3457', 'snowking', '进店消费中、西餐8.8折优惠。');

 要求对上面的表按content值的折扣排序?????

 

希望结果是:

1:'3455', '测试3', '开票菜品9.5折不开票菜品8折

2:'3453', '测试1', '菜品8.5折,其它均无折扣'

3:3457', 'snowking', '进店消费中、西餐8.8折优惠。

4:2345', '测试2', '现金优惠劵,满100抵10元代金劵或9折优惠(酒水除外)

5:'3456', 'anges', '不开发票,菜品9折')

6:'2134', 'kunsy', '菜品9.5折不开发票,酒水除外

 

求一条完整的sql!!!!就按折扣值排序就ok了。!!!

 

小弟Q:1004143305,拜托了!!!!

 

2012年9月06日 19:24

3个答案 按时间排序 按投票排序

0 0

这题目也挺坑爹的...建议把折扣单独拎出作为一个字段,或者你到程序里代码实现吧,用正则替换出折扣,然后排序

2012年9月07日 18:00
0 0

表结构违反第一范式

2012年9月06日 23:48
0 0

这是不可能的,mysql不是智能机器人。。

表结构设计有问题

你现在的需求单
1、菜品9.5折不开发票,酒水除外

         菜品 折扣 开发票/不开发票

2、现金优惠劵,满100抵10元代金劵或9折优惠(酒水除外)
 
        消费类型现金  『
                        满100 - 10
                        折扣
                 』

3、菜品8.5折,其它均无折扣

      菜品 折扣
      
4、开票菜品9.5折不开票菜品8折
     
     菜品  折扣   开发票/不开     

5、不开发票,菜品9折

      菜品 不开票 折扣

6、现金优惠劵,满100抵10元代金劵

       消费类型现金  『
                        满100 - 10
                 』
7、进店消费中、西餐8.8折优惠。
        西餐  折扣

按照你现在需求可以设计 优惠表
名字  类型   折扣    满  减   开发票否
测试  菜品   9        -1   -1   否           
测试  菜品   -1      100  10  否

-1表示无

然后按照这个可以再扩展

2012年9月06日 19:57

相关推荐

    SQL SERVE根据值查找所在的表和字段

    ### SQL Server根据值查找所在的表和字段 在SQL Server中,有时我们需要找出特定值存在于哪个表的哪个字段中。这通常发生在数据维护、数据分析或数据迁移等场景中,特别是当数据库中有大量表时,手动检查变得非常...

    varchar日期字段分区demo

    Range分区:最为常用,基于属于一个给定连续区间的列值,把多行分配给分区。最常见的是基于时间字段. 基于分区的列最好是整型,如果日期型的可以使用函数转换为整型。varchar日期字段分区sql demo

    Thinkphp3.2.3自定义添加数据表及表中字段

    自定义添加表中字段则是通过在已有的数据表上进行ALTER TABLE操作。假设你想要在上面创建的`users`表中添加新的字段,如`username`和`email`,可以这样做: ```php M()->execute("ALTER TABLE `users` ADD `...

    MySQL数据表添加字段

    在MySQL数据库管理中,添加字段是一项常见的操作,用于在已有的数据表中增加新的列来扩展数据表的结构。这通常发生在数据需求发生变化或者需要记录更多相关信息时。本篇文章将详细探讨如何在MySQL中添加字段,以及...

    SQLServer中如何将一个字段的多个记录值合在一行显示

    SQLServer 中将一个字段的多个记录值合并到一行显示的实现方法 SQL Server 是一种关系型数据库管理系统,具有强大的数据处理能力和存储能力。在实际应用中,我们经常需要将一个字段的多个记录值合并到一行显示,以...

    25 对于VARCHAR这种变长字段,在磁盘上到底是如何存储的.pdf

    5. 变长字段长度列表的实际应用:假设有一个表,包含两个VARCHAR类型的字段和一个CHAR类型的字段。在磁盘上实际存储时,MySQL会先记录下这两个变长字段的长度信息,然后跟着这些信息后是实际的数据内容。具体来说,...

    更改Oracle表中字段的顺序的终极方法

    ### 更改Oracle表中字段顺序的方法 在Oracle数据库管理中,有时我们可能需要对表中的字段顺序进行调整。然而,通常的做法是通过备份、删除原表并重建来达到这一目的,这种方法不仅耗时而且繁琐。幸运的是,经过一番...

    Oracle查询指定表的所有字段名和数据类型SQL

    ### Oracle查询指定表的所有字段名和数据类型SQL 在Oracle数据库管理中,有时我们需要了解某个特定表的所有字段名称以及它们对应的数据类型等信息。这对于理解表结构、进行数据迁移或编写更为精确的SQL语句非常有...

    GP数据库表结构转mysql库、oracle库 varchar类型字段长度批量处理excel_MYSQL_oracle_数据库

    在Oracle数据库中,varchar2类型的字段长度可高达4,000个字符,但在特定情况下,如使用BLOB存储,可以扩展到更大的值。当从Oracle迁移到MySQL或GP时,可能需要调整字段长度以适应目标数据库的限制。例如,如果源...

    行业-25 对于VARCHAR这种变长字段,在磁盘上到底是如何存储的.rar

    - 空间效率:如果一个表中的VARCHAR字段经常存储短字符串,那么这种方法可以避免大量浪费的空间。 - I/O效率:通过减少单个数据行的大小,可以提高磁盘I/O效率,因为较小的行更容易缓存,并且在读写时需要处理的...

    知道某个字段的值(例如:“张三”),需要查询在其他某个表中有没有相同的值

    通过使用存储过程,可以实现字段值的查询,例如,在某个表中查询某个字段的值是否存在于其他表中。 Oracle 存储过程的优点是可以减少网络流量,提高数据的安全性和一致性。下面是一个使用 Oracle 存储过程实现字段...

    Oracle 增加修改删除字段

    **示例**:向表`test1`中添加一个名为`name`的字段,数据类型为`VARCHAR2(30)`,默认值为`'prg'`,并且不允许为空。 ```sql ALTER TABLE test1 ADD (name VARCHAR2(30) DEFAULT 'prg' NOT NULL); ``` 如果需要同时...

    ORACLE ERP 11i表结构字段中文名称

    ### ORACLE ERP 11i表结构字段中文名称解析 #### BOM 模块常用表结构 ##### 1. **bom_bill_of_materials** **表名**: bom.bom_bill_of_materials **说明**: BOM 清单父项目表 **主要字段**: - **BILL_SEQUENCE...

    sql学习 合并重复行 定义新的列为其添加数据 新组成的表安某字段排序 分页语句

    #### 三、新组成的表按某字段排序 排序是SQL中非常常见的需求之一,通常使用`ORDER BY`语句来实现。 示例代码: ```sql -- 示例6:对合并后的结果进行排序 SELECT * FROM ( SELECT parentguid, name FROM ...

    mysql 查询某个特定值在整个数据库中所在的表和字段 (已知数据库和字段值,查询表明和字段名)

    CREATE TABLE temp(tablename VARCHAR(255),LieName VARCHAR(255)); delimiter $$ DROP procedure IF EXISTS getDataByDbName $$ CREATE procedure getDataByDbName(in dbName VARCHAR(255),IN ziduan VARCHAR(255))...

    如何查询数据库中表的字段信息

    如何查询数据库中表的字段信息 在数据库管理中,了解某个表的字段信息是非常重要的,这可以帮助我们更好地理解表的结构和设计。今天,我们将学习如何使用SQL语句来查询数据库中表的字段信息,本文将分别介绍SQL ...

    Oracle数据库表中字段顺序的修改方法

    3. 根据临时表重建原表,并赋予正确的顺序和值。 4. 删除临时表。 **第二种方法**,更科学且推荐使用,需要`sys`或`system`权限。步骤如下: 1. 查询目标表在数据库中的ID,例如: ```sql select object_id from ...

    26 一行数据中的多个NULL字段值在磁盘上怎么存储.pdf

    因此,对于表中的每一行数据,都会有一个对应的NULL值列表来记录这四个允许为NULL的字段的值是否为NULL。 4. 磁盘存储格式 在磁盘上存储一行数据时,通常采用以下格式: ``` 变长字段长度列表NULL值列表头信息...

    修改MySQL数据库中表和表中字段的编码方式的方法

    这个命令会更改`test`表中名为`name`的字段的字符集为`utf8`,同时保持其VARCHAR类型和非空约束不变。如果字段已有数据,记得先备份,因为修改字符集可能会影响数据的表示。 在执行这些操作之前,确保你理解表和...

    sql在一个表中添加字段并添加备注的方法

    1、加字段: alter table 表名 ADD 字段名 类型; eg: alter table sys_cwzd ADD SCCLLJ VARCHAR2(50);   2、加备注: comment on column 表名.字段名 is '备注名'; eg: comment on column sys_cwzd.SCCLLJ is ...

Global site tag (gtag.js) - Google Analytics