Php mysql插入函数
我正在用MySQL数据库创建一个简单的PHP网页。 MYSQL数据库包含以下内容:左图 我只是想知道一种可能的方法,通过对数据进行处理来获得下面右边部分的结果Php mysql插入函数,php,mysql,loops,for-loop,dml,Php,Mysql,Loops,For Loop,Dml,我正在用MySQL数据库创建一个简单的PHP网页。 MYSQL数据库包含以下内容:左图 我只是想知道一种可能的方法,通过对数据进行处理来获得下面右边部分的结果 (initial value) (final result) ID | MINUS '1'(to "next" ID's) ID | ID | 1 | 0
(initial value) (final result)
ID | MINUS '1'(to "next" ID's) ID | ID |
1 | 0 1 | ------------> 1 |
2 | 1 --> (will minus '1' to ID 3 2 | ------------> 2 |
3 | 0 up to the last) 3-1 = 2 | ------------> 2 |
4 | 0 4-1 = 3 | ------------> 3 |
5 | 1 --> (minus '1' AGAIN to ID 6 5-1 = 4 | ------------> 4 |
6 | 0 up to the last) 6-1 = 5 -1 ---> 4 |
7 | 0 7-1 = 6 -1 ---> 5 |
它只是计算负号的数目,然后将其减去它后面的所有ID。ID2告诉下一个ID,即3减去1到最后一个ID,3-1,4-1,5-1,6-1,7-1,但另一个实例出现了。ID 5告诉ID 6再次减去自身直到最后一个ID,因此从ID 6减去2直到最后一个ID。从6-1,7-1-->6-2,7-2开始
我知道这对你来说很容易,但我只是个新手,觉得这很难。对不起,我头疼。希望有人能帮忙,谢谢
我的DML只是为了说明,这应该是php的,我会转换它,只是在逻辑上帮助我
for($x=0;$x<num_rows;$x++)
{
if(MINUS = 1){
query(UPDATE table_name SET ID=ID-1 WHERE ID = $x);}
}
诸如此类,我仍然是决策循环的新手。如果您能修复我的环路,我将不胜感激。我是这个社区的新手,请您理解。您可以在MySQL中使用变量或标准SQL来实现这一点。以下是标准SQL:
select id, minus,
(id - coalesce((select sum(minus) from table t2 where t2.id < t.id), 0)) as newId
from table t;
您可以按如下方式使用MySQL实现:
select id, minus,
(id - coalesce((select sum(minus) from table t2 where t2.id < t.id), 0)) as newId
来自表t
代码的想法来自Gordon的帖子,这里有一个详细说明
第一部分是select,它表示您希望从mysql中选择某些输入。id后面是减号,表示您希望在查询运行完成后返回id和减号的值
其余部分属于第三部分,在第三部分中执行减法,并将减法的值作为newId返回。因此,当sql返回时,它将得到一行,其标题为ID、减号和NEWID
减法的工作原理如下:coalesce返回第一个非空值,即列表中的1。表t2使用表的第二个版本,并将其命名为t2,以便您可以比较信息
我希望这能为你澄清一些事情 你能分享你迄今为止尝试过的代码吗?如果我们知道你尝试了什么,我们会更容易帮助你。我刚刚更新了它,请看一看你好,谢谢你的回复。请问您在select id、value中所指的“值”是什么。我知道这是一个很难回答的问题,“id”和“value”是sql查询完成后返回的内容。我想Gordon想在这里用减号,所以把它改成减号,然后给它一个快照。很抱歉这么麻烦,但我真的不能完全得到你的答案。别误会我,这是我的错,我是个新手。你能再解释一下吗。您指的是什么值、t2.id和t.id?请原谅help@aashnisshah好的,我试试看。谢谢你的详细解释。@aashnissah我被卡住了,我应该在哪里或者如何获得这个值?我应该初始化它吗?从第2行之类的地方获取它。我可以直接测试标准SQL吗?因为我使用的是MySQL查询浏览器,我让你头疼,但请不要生气,t2和t的区别是什么?我应该如何把它作为一个查询浏览器。我的意思是我应该如何查询t2,我应该如何使t2引用表的第二个版本?请回答。慢慢来,再次感谢您的回复。我的意思是我应该如何查询t2,如何让t2引用表的第二个版本?谢谢你的帮助。希望你能再次回答。我明天回来,我会尽快告诉你最新情况。谢谢你抽出时间,晚安。
select id, minus,
(id - coalesce((select sum(minus) from table t2 where t2.id < t.id), 0)) as newId