где в предложении во вложенном запросе

Я использую mysql и php. Я не могу удалить какие-либо записи, даже если существуют записи, отвечающие условию, указанному в запросе, пожалуйста, помогите определить проблему, мой запрос

Таблица1 (идентификатор, LName) таблица2 (идентификатор, LName)

delete from table1 where Lname in (select Lname from table2); 

person Ajeet    schedule 25.03.2014    source источник
comment
Это не лучший стиль, чтобы задавать вопросы в SO. Пожалуйста, покажите структуру вашей таблицы и то, что вы уже сделали.   -  person Choudhury Saadmaan Mahmid    schedule 25.03.2014
comment
У меня есть две таблицы table1(id, name) и table2(id, name), я хочу удалить записи из table1, если такое же имя существует в table2.   -  person Ajeet    schedule 25.03.2014
comment
Пожалуйста, добавьте описание таблицы и другие детали в свой комментарий.   -  person Neels    schedule 25.03.2014
comment
Ваш запрос, кажется, в порядке. С какой проблемой вы столкнулись?   -  person Choudhury Saadmaan Mahmid    schedule 25.03.2014
comment
Вы получаете какую-либо ошибку или просто предупреждение 0 rows modified.   -  person Neels    schedule 25.03.2014
comment
Lname опечатка? Кажется, в ваших таблицах есть столбец с именем   -  person shree.pat18    schedule 25.03.2014
comment
Я получаю сообщение о 0 затронутых строках)   -  person Ajeet    schedule 25.03.2014
comment
да Lname имеет тип varchar   -  person Ajeet    schedule 25.03.2014
comment
показать примеры ваших данных   -  person Alexander    schedule 25.03.2014


Ответы (3)


delete from table1 where Lname in (select Lname from table2);

Это работа для меня. Может быть, у него проблема с корпусом, поэтому попробуйте так

delete from table1 where upper(Lname) in (select upper(Lname) from table2);

person Sathish    schedule 25.03.2014

Согласно структуре таблицы, которую вы указали в своем комментарии, запрос должен выглядеть примерно так:

delete from table1
where name in 
(select name 
 from table2)

Но, согласно вашему вопросу, кажется, что в вашей таблице нет столбца с именем «Lname».

Если имя вашего столбца на самом деле «Lname», запрос можно переписать как:

delete from table1
where Lname in 
(select Lname 
 from table2)

Пожалуйста, будьте особенно внимательны при упоминании структуры таблицы, вы ДОЛЖНЫ публиковать соответствующие названия ваших таблиц и столбцов и с правильным написанием.

person Choudhury Saadmaan Mahmid    schedule 25.03.2014

Другой вариант - использовать JOIN: -

DELETE table1
FROM table1 
INNER JOIN table2
ON table1.Lname table2.Lname

но ваш исходный SQL должен работать

person Kickstart    schedule 25.03.2014