如果Select返回任何内容,则Sql插入默认值

时间:2012-11-03 16:04:07

标签: mysql sql select insert

我有以下SQL查询,它使用各种电话的详细信息填充表格。

INSERT tblCalls (callerID, destinationNum)
SELECT tblCallerID.callerID, tblSkyNums.skyID
FROM tblCallerID, tblSkyNums
WHERE tblCallerID.callerNumber = '".$caller_id."'
AND tblSkyNums.skyNum = '".$dest_no."'

查询从两个单独的表中获取callerID和skyID,并将它们插入到第三个表中; tblCalls。

我的问题是有时输入的数字不存在skyID,当发生这种情况时,不会输入tblCalls。这意味着没有为此呼叫记录数据。

我一直试图做的是如果不存在这样的skyID,只需在该特定呼叫的skyID字段中输入'n / a'即可。

我已经在这里待了两天多了,似乎无法找到办法让它发挥作用。 任何帮助都会得到很好的赞赏。

1 个答案:

答案 0 :(得分:1)

Coalesce只让你到了一半。问题是FROM子句中的','执行INNER JOIN,因此如果在tblSkyNums中没有选择任何行,那么将不会从SELECT查询返回任何行。

要解决此问题,您需要一个OUTER JOIN:

INSERT INTO tblCalls (callerID, destinationNum)
SELECT DISTINCT tblCallerID.callerID, COALESCE(tblSkyNums.skyID, 'N/A')  AS skyID
  FROM tblCallerID
  LEFT OUTER JOIN tblSkyNums
    ON tblSkyNums.skyNum = '".$dest_no."'
 WHERE tblCallerID.callerNumber = '".$caller_id."'

希望这有帮助!

...约翰