MySQL-如何选择具有1个条件的所有数据,并在必要时使用其他条件完成?
我有一个带有状态列和3个条件的DB: -1=被谴责MySQL-如何选择具有1个条件的所有数据,并在必要时使用其他条件完成?,mysql,sql,asp-classic,Mysql,Sql,Asp Classic,我有一个带有状态列和3个条件的DB: -1=被谴责 0=中子 1=已批准 我需要将所有寄存器分为两组: 设置1(主)-这是“主”表,限制为5个寄存器。但所有批准的文件都必须放在这张表中——即使我们有超过5份文件——并且没有一份“受谴责”的登记册可以放在这里 例如: -如果我们有10个批准-主表将有10个全部批准。 -如果我们有2个已批准-主表将有2个已批准的+3个中子。(总共5个)-但如果我只有1个中子,例如10个重复验证-该表将只有2个全部批准的+1个中子。(3个登记册) 第2组-将有所有已复
0=中子
1=已批准 我需要将所有寄存器分为两组: 设置1(主)-这是“主”表,限制为5个寄存器。但所有批准的文件都必须放在这张表中——即使我们有超过5份文件——并且没有一份“受谴责”的登记册可以放在这里 例如:
-如果我们有10个批准-主表将有10个全部批准。
-如果我们有2个已批准-主表将有2个已批准的+3个中子。(总共5个)-但如果我只有1个中子,例如10个重复验证-该表将只有2个全部批准的+1个中子。(3个登记册) 第2组-将有所有已复制的+其余的中子-没有寄存器限制 情况1:状态1超过寄存器限制(5) 集合1将为:(所有状态1) 第2组将是:
8 - Gio - 0
9 - Rick - 0
10 - May - -1
6 - Fred - 0
7 - Nick - 0
8 - Gio - 0
9 - Rick - 0
10 - May - -1
5 - Helen - -1
6 - Fred - -1
7 - Nick - -1
8 - Gio - -1
9 - Rick - -1
10 - May - -1
情景2:(填写状态为0的表格)
集合1将是:(所有状态1+2,状态0)
第2组将是:
8 - Gio - 0
9 - Rick - 0
10 - May - -1
6 - Fred - 0
7 - Nick - 0
8 - Gio - 0
9 - Rick - 0
10 - May - -1
5 - Helen - -1
6 - Fred - -1
7 - Nick - -1
8 - Gio - -1
9 - Rick - -1
10 - May - -1
然后-情况3:(所有状态1+状态0小于寄存器限制-5)
集合1将是:(所有状态1+1和状态0-仅4个寄存器)
第2组将是:
8 - Gio - 0
9 - Rick - 0
10 - May - -1
6 - Fred - 0
7 - Nick - 0
8 - Gio - 0
9 - Rick - 0
10 - May - -1
5 - Helen - -1
6 - Fred - -1
7 - Nick - -1
8 - Gio - -1
9 - Rick - -1
10 - May - -1
有什么想法吗?通常的方法是使用SQL查询收集要显示的行。 这将提供选择(WHERE子句)和排序(ORDERBY子句)。一旦 如果有行,请根据需要使用ASP呈现HTML 我将把ASP经典留给你 前5名,状态=1
SELECT
`id`,
`name`,
`status`
FROM `table`
WHERE `status` = 1
ORDER BY `status` DESC,`name` ASC
LIMIT 5;
SELECT
`id`,
`name`,
`status`
FROM `table`
WHERE `status` = -1
ORDER BY `status` DESC,`name` ASC;
所有状态均为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
LIMIT 5;
SELECT
`id`,
`name`,
`status`
FROM `table`
WHERE `status` = -1
ORDER BY `status` DESC,`name` ASC;
您似乎混淆了术语DB和TABLE。对于DB,我假定您指的是table,而对于table,我假定您指的是查询的结果。我相信我们有很多想法,但你需要展示你的尝试。所以这不是一个代码编写服务。你好@sloather首先感谢你宝贵的时间来帮助我。我不是mysql方面的专家,但我想这将是mysql更好的解决方案。我正在尝试使用经典ASP的解决方案-使用DO/LOOP,但我无法根据需要限制表。您需要使用prepare语句使查询动态。哪一个?第一组将结果限制在前5个。如果要限制第二组,请添加限制条款。如果批准了7个用户,则第一组将包括7个项目,而不是默认的5个限制