0

私の挿入の1つには、次のものがあります:(PDO / MySQL)

$this->sql = "INSERT INTO tblfixedfare SELECT NULL, MAX(FixedFareID)+1, '1', '$fieldDay' FROM tblfixedfare UNION SELECT NULL, MAX(FixedFareID)+1, '2', '$fieldNight' FROM tblfixedfare"

データベースが空でない場合、これは正常に機能します。MAX(FixedFareID) == 1テーブルが空の場合、どのように設定しますか?

4

2 に答える 2

2
SELECT NULL, IFNULL(MAX(FixedFareID), 0) + 1

[編集]

@AndreKRが述べたように、間違いなくを使用する方が良いCOALESCEです。データベース間での互換性が高くなります(OracleではIFNULLは代わりにNVLと呼ばれます)。また、COALESCEは3つ以上のパラメーターを許可します。この場合、ヌルではない最初のパラメーターを返します。COALESCEは読みにくいと思います。おそらく、この用語が英語を母国語としない人(私のような)にはあまり知られていないためです。IFNULLは非常に自明です。ただし、これは、互換性を高め、より柔軟に使用するための小さなトレードオフです。

于 2012-10-16T11:23:24.230 に答える
0
$this->sql = "INSERT INTO tblfixedfare SELECT NULL, IFNULL(MAX(FixedFareID),1)+1, '1', '$fieldDay' FROM tblfixedfare UNION SELECT NULL, IFNULL(MAX(FixedFareID),1)+1, '2', '$fieldNight' FROM tblfixedfare"
于 2012-10-16T11:28:12.970 に答える