2014-02-16 51 views
-2

那么,这是一个问题的地狱。更新列如果两个其他选择的计算大于

这里是一个什么样的方式,我想

$result = mysql_query(" SELECT (less, more) FROM tempTable WHERE id = '$id' "); 
    $row = mysql_fetch_row($result); 

    if(($row[1] - $row[0])/75 <= 1.5) 
    { 
     INSERT INTO tempTable (payValue) VALUES ('$ammount') WHERE id = '$user';   
    } 

问题是,是否有可能使这两个查询之一吗?

+0

你为什么不尝试一下,看看? –

+0

我的意思是,这工作,但我想知道是否有可能使只有一个查询该全怪物 – user3316068

回答

1

是的,你可以在一个声明中做到这一点:

INSERT INTO tempTable (payValue) 
    SELECT $ammount 
    FROM tempTable 
    WHERE id = '$id' and (more - less)/75 <= 1.5; 

编辑:

好了,这可能是另一种情况,其中一个insert确实应该是一个update

UPDATE tempTable 
    set payValue = $ammount 
    WHERE id = '$id' and (more - less)/75 <= 1.5; 

当你想添加新的时使用insert。当您想要更改现有行的值时,请使用update

如果你希望另一行,那么这将是这样的:

INSERT INTO tempTable (id, payValue) 
    SELECT id, $ammount 
    FROM tempTable 
    WHERE id = '$id' and (more - less)/75 <= 1.5; 
+0

好吧,如果我把 'INSERT INTO不是Temptable(payValue) 选择85 FROM不是Temptable WHERE ID = 0和(更多 - 少)/ 75 <= 1.5; ' in the left pannel in:http://sqlfiddle.com/#!2/960a1/1 我得到一个错误(这可能是由于SQLFiddle而不是MySQL本身): Field'id'doesn'吨有一个默认值 – user3316068

+0

这个技巧。今天两次,谢谢戈登!你明确地做了我的一天! – user3316068

相关问题