views:

216

answers:

2

Hi all

I can't work out how to get the mysql client to return the number of rows deleted to the shell when running a delete. Does anyone know what option will enable this? Or ways around it?

Here's what i'm trying, but i get no output:

#!/bin/bash
deleted=`mysql mydb -e "delete from mytable where insertedtime < '2010-04-01 00:00:00'"|tail -n 1`

I was expecting something like this as the output from mysql:

deleted
999999

Which is why i have the tail -n 1 so i only pick up the count and not the column name.

When running the command by hand (mysql mydb -e "delete from mytable where insertedtime < '2010-04-01 00:00:00'") there is no output. When running the command interactively when running the mysql client i ge the following:

mysql>delete from mytable where insertedtime < '2010-04-01 00:00:00';
Query OK, 0 rows affected (0.00 sec)

I want to get the rows affected count into my shell variable.

Any help would be most appreciated.

A: 

deleted=mysql mydb -e "delete from mytable where insertedtime < '2010-04-01 00:00:00'"|tail -n 1

 int icount = mysql_CountRow(deleted);

it works for me try this.

moon
When I google for `mysql_CountRow` I get only one result: your answer ;)
Felix Kling
+2  A: 

This question was asked previously: http://stackoverflow.com/questions/1083866/how-to-get-number-of-rows-affected-while-executing-mysql-query-from-bash

Felix Kling
Hi Felix, when running the command from the shell with the -e option i don't get any output, so i don't get 'Query OK, 1 row affected (0.06 sec)'
simonlord
@simonlord: Oops didn't know that... let me think again.
Felix Kling
Cheers for the link Felix - tried searching for answers earlier - guess i didn't use the right keywords.
simonlord