mysql-如何选择一个条件下的所有数据,必要时用其他条件完成?

omjgkv6w  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(377)

我有一个db,有一个状态列和3个条件:
-1=受责备
0=中子
1=批准
我需要将所有寄存器分成两组:
设置1(主)-这是“主”表,最多有5个寄存器。但是所有被批准的人都必须在这个表格里——即使我们有超过5个——而且没有一个“被指责”的登记册可以在这里。
例如:
-如果我们有10个批准-主表将有10个全部批准。
-如果我们有2个批准-主表将有2个全部批准+3个中子(总共5个)-但是如果我只有1个中子和10个重复的,例如-表格将有2个全部批准+1个中子(3个寄存器)。
第2组-将有所有的责备+其余的中子-没有寄存器的限制。
情况1:状态1超过寄存器限制(5)

ID - NAME - STATUS
1 - John  -  1
2 - Mary  -  1
3 - Mike  -  1
4 - James -  1
5 - Helen -  1
6 - Fred  -  1
7 - Nick  -  1
8 - Gio   -  0
9 - Rick  -  0
10 - May  - -1

集合1将是:(所有状态1)

ID - NAME - STATUS
1 - John  -  1
2 - Mary  -  1
3 - Mike  -  1
4 - James -  1
5 - Helen -  1
6 - Fred  -  1
7 - Nick  -  1

第2组将是:

8 - Gio   -  0
9 - Rick  -  0
10 - May  - -1

情形2:(填写状态为0的表格)

ID - NAME - STATUS
1 - John  -  1
2 - Mary  -  1
3 - Mike  -  1
4 - James -  0
5 - Helen -  0
6 - Fred  -  0
7 - Nick  -  0
8 - Gio   -  0
9 - Rick  -  0
10 - May  - -1

集合1将是:(所有状态1+2,状态0)

ID - NAME - STATUS
1 - John  -  1
2 - Mary  -  1
3 - Mike  -  1
4 - James -  0
5 - Helen -  0

第2组将是:

6 - Fred  -  0
7 - Nick  -  0
8 - Gio   -  0
9 - Rick  -  0
10 - May  - -1

然后-情况3:(所有状态1+状态0小于寄存器限制-5)

ID - NAME - STATUS
1 - John  -  1
2 - Mary  -  1
3 - Mike  -  1
4 - James -  0
5 - Helen - -1
6 - Fred  - -1
7 - Nick  - -1
8 - Gio   - -1
9 - Rick  - -1
10 - May  - -1

集合1将是:(所有状态1+1和状态0-只有4个寄存器)

ID - NAME - STATUS
1 - John  -  1
2 - Mary  -  1
3 - Mike  -  1
4 - James -  0

第2组将是:

5 - Helen - -1
6 - Fred  - -1
7 - Nick  - -1
8 - Gio   - -1
9 - Rick  - -1
10 - May  - -1

你知道吗?

hjzp0vay

hjzp0vay1#

通常的方法是使用sql查询收集要显示的行。它将提供选择(where子句)和排序(orderby子句)。一旦有了行,就可以根据需要使用asp来呈现html。
我把asp经典留给你。
状态为1的前5个

SELECT 
    `id`,
    `name`,
    `status`
FROM `table`
WHERE `status` = 1
ORDER BY `status` DESC,`name` ASC
LIMIT 5;

所有状态均为1或0

SELECT 
    `id`,
    `name`,
    `status`
FROM `table`
WHERE `status` IN (0,1)
ORDER BY `status` DESC,`name` ASC;

所有状态均为-1

SELECT 
    `id`,
    `name`,
    `status`
FROM `table`
WHERE `status` = -1
ORDER BY `status` DESC,`name` ASC;

相关问题