Do you mean when there are no rows where keyword='tank' then the subquery will return zero rows?
Here's a way to work around that: use an outer join so you get at least one row, and match that to the set of rows where keyword='tank'. If there are no such rows, it still returns the one row from the other side of the outer join. Then you can use COALESCE() to default the sid to the dummy zero value.
SELECT sid FROM (
SELECT COALESCE(myTable.sid, t.placeholder) AS sid
FROM (SELECT 0 AS placeholder) AS t
LEFT OUTER JOIN myTable ON keyword='tank'
) AS InnerTmp LIMIT 1