Mysql
如果沒有返回記錄,mysql cli 可以退出並出錯嗎?
我想在 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
試一試 !!!