我試圖找到包含在我的表的兩個單獨字段中的最大值。查找兩個varchar字段的最大數值
我用在我的模型代碼是:
$query = $this->db->query("select max($field1) as max_id_1 from default_table1");
$row1 = $query->row_array();
$query = $this->db->query("select max($field2) as max_id_2 from default_table1");
$row2 = $query->row_array();
return max($row1['max_id_1'], $row2['max_id_2']);
我一個完整的新手,其中PHP和CodeIgniter的關注 - 因爲我相信我的代碼演示了:)
它正在工作,因爲它是返回值,但不是我在字段中的最大值。例如,我知道有一個4000的值,但返回的最高是750.
我想知道這是否是因爲字段的類型爲VARCHAR,因爲雖然他們主要包含數字有一些包含字符( - 或& )或單詞'to',所以我不能使用INT類型。 由於使用VARCHAR,它沒有看到4000大於750?
如果是的話,是否有辦法在檢查最大值之前將字段內容轉換爲整數,並且這會受到字段中非整數值的影響?
感謝您提供所有的幫助和建議。
Tony。
感謝@米蘭。它正在工作 - 當然比我想出的代碼更好 - 但是如果比較是在數字和空值之間(例如$ field1 = 4000,$ field2 = NULL),它似乎沒有取得最大值。這是預期的嗎?任何想法如何克服這一點?再次感謝你的幫助。 – tcarnell 2012-03-31 10:33:16
當然,使用COALESCE。而不是field1和field2使用COALESCE(field1,0)和COALESCE(field2,0) – 2012-03-31 21:14:27
Superb @milan。這工作出色:)非常感謝您的幫助,非常感謝。 – tcarnell 2012-04-01 10:27:59