Mysql

如果沒有返回記錄,mysql cli 可以退出並出錯嗎?

  • December 22, 2021

我想在 bash 中執行一個 sql 命令,並根據是否有結果來做一些事情。

例如

$ LOOKUP=123; mysql -e \
   'SELECT id FROM table WHERE id='$LOOKUP dbname \
   && echo "Row $LOOKUP exists"
   || echo "Row $LOOKUP does not exists"

我可以想到 bodges(例如測試 ZLS),但想知道是否有乾淨的方法?

嘗試更改查詢以強制一個值

代替

SELECT id FROM table WHERE id=${LOOKUP}

您可以使用

SELECT COUNT(1) FROM table WHERE id=${LOOKUP}

這是使用該新查詢的 bash 腳本

LOOKUP=123
SQLSTMT="SELECT COUNT(1) FROM table WHERE id=${LOOKUP}"
RCOUNT=`mysql -u... -p... -AN -Ddbname -e"${SQLSTMT}"`
if [ ${RCOUNT} -eq 0 ]
then
   echo "Row ${LOOKUP} exists"
else
   echo "Row ${LOOKUP} does not exist"
fi

這是一個替代方案

LOOKUP=123
SQLSTMT="SELECT CONCAT('Row ',rcount,' ',IF(rcount=0,'Exists','Does Not Exist')) FROM (SELECT COUNT(1) rcount FROM rolando WHERE id=${LOOKUP}) A"
mysql -u... -p... -AN -Ddbname -e"${SQLSTMT}" > /tmp/answer.txt
cat /tmp/answer.txt

試一試 !!!

引用自:https://dba.stackexchange.com/questions/12007