对于我的一个插入,我有以下内容:(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
?
答案 0 :(得分:2)
SELECT NULL, IFNULL(MAX(FixedFareID), 0) + 1
[编辑]
正如@AndreKR所提到的,使用COALESCE
可能更好。它与数据库的兼容性更好(在Oracle IFNULL中称为NVL)。此外,COALESCE允许超过2个参数,在这种情况下,它返回第一个非空的参数。我认为COALESCE的可读性较差,可能是因为非本地英语人士(比如我)对该术语的了解较少,其中IFNULL是不言自明的。但这是一个小的权衡,以获得更好的兼容性和更灵活的使用。
答案 1 :(得分: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"