subselet in delete (SCRUM)
mysql-test/r/subselect.result: subselects in delete test mysql-test/t/subselect.test: subselects in delete test sql/sql_delete.cc: subselet in delete
This commit is contained in:
parent
52f18046c4
commit
30d1b14361
@ -335,3 +335,22 @@ a b
|
||||
1 21
|
||||
2 22
|
||||
drop table t1, t2;
|
||||
drop table if exists t1, t2;
|
||||
create table t1 (a int NOT NULL, b int, primary key (a));
|
||||
create table t2 (a int NOT NULL, b int, primary key (a));
|
||||
insert into t1 values (0, 10),(1, 11),(2, 12);
|
||||
insert into t2 values (1, 21),(2, 12),(3, 23);
|
||||
select * from t1;
|
||||
a b
|
||||
0 10
|
||||
1 11
|
||||
2 12
|
||||
select * from t1 where b = (select b from t2 where t1.a = t2.a);
|
||||
a b
|
||||
2 12
|
||||
delete from t1 where b = (select b from t2 where t1.a = t2.a);
|
||||
select * from t1;
|
||||
a b
|
||||
0 10
|
||||
1 11
|
||||
drop table t1, t2;
|
||||
|
@ -215,3 +215,14 @@ update t1 set b= (select b from t2 where t1.a = t2.a);
|
||||
select * from t1;
|
||||
drop table t1, t2;
|
||||
|
||||
#delete with subselects
|
||||
drop table if exists t1, t2;
|
||||
create table t1 (a int NOT NULL, b int, primary key (a));
|
||||
create table t2 (a int NOT NULL, b int, primary key (a));
|
||||
insert into t1 values (0, 10),(1, 11),(2, 12);
|
||||
insert into t2 values (1, 21),(2, 12),(3, 23);
|
||||
select * from t1;
|
||||
select * from t1 where b = (select b from t2 where t1.a = t2.a);
|
||||
delete from t1 where b = (select b from t2 where t1.a = t2.a);
|
||||
select * from t1;
|
||||
drop table t1, t2;
|
||||
|
@ -37,14 +37,18 @@ int mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds, ORDER *order,
|
||||
bool using_limit=limit != HA_POS_ERROR;
|
||||
bool transactional_table, log_delayed, safe_update, const_cond;
|
||||
ha_rows deleted;
|
||||
TABLE_LIST *delete_table_list= (TABLE_LIST*)
|
||||
thd->lex.select_lex.table_list.first;
|
||||
DBUG_ENTER("mysql_delete");
|
||||
|
||||
if (!(table = open_ltable(thd, table_list, table_list->lock_type)))
|
||||
if ((open_and_lock_tables(thd, table_list)))
|
||||
DBUG_RETURN(-1);
|
||||
fix_tables_pointers(&thd->lex.select_lex);
|
||||
table= table_list->table;
|
||||
table->file->info(HA_STATUS_VARIABLE | HA_STATUS_NO_LOCK);
|
||||
thd->proc_info="init";
|
||||
table->map=1;
|
||||
if (setup_conds(thd,table_list,&conds) ||
|
||||
if (setup_conds(thd, delete_table_list, &conds) ||
|
||||
setup_ftfuncs(&thd->lex.select_lex))
|
||||
DBUG_RETURN(-1);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user