我有这张桌子
TABLE 1
| WORD |
_________
| word1 |
| word2 |
| word3 |
TABLE 2
| ID || WORD |
__________________
| ID1 || word1 |
| ID1 || word2 |
| ID2 || word1 |
| ID2 || word3 |
| ID2 || word2 |
| ID3 || word2 |
| ID3 || word4 |
| ID4 || word5 |
| ID5 || word5 |
我查询:
SELECT WORD, count(WORD)
FROM TABLE 2
WHERE WORD in ('word1', 'word2', 'word3', 'word7', 'word8')
GROUP BY WORD
它给我一个这样的表:
| WORD || COUNT(WORD) |
_________________________
| word1 || 2 |
| word2 || 3 |
| word3 || 1 |
但我需要的是反过来......我需要一个带有'word7'和'word8'的数组(所有匹配的数字都是num_rows = 0 ......)
当我得到这个结果时,我想在表1中使用它们来删除它们
我试过,但我没有正确的方式......
if(mysql_num_rows($mots_cles_count) == 0) {
mysqli_query($BDD_connect, "DELETE FROM TABLE 1 WHERE (WORD) IN ('word7'), ('word8');
}
编辑:比较Ajax数组中的值并删除它们如果不在表中
我的代码已经发展......
使用POST METHOD $tab_tuto_sauvegarde = $_POST['tableau_valeurs_modifiees'];
,Ajax请求会向我返回以下信息:
[Mots_cles_supprimes] => Array
(
[0] => jambon
[1] => rap
[2] => tomate
)
对于[index]
的每个tableau_valeurs_modifiees.['Mots_cles_supprimes']
(此处:“jambon”,“rap”和“tomate”),将这些单词与TABLE 2
进行比较,如果还没有TABLE 2
,在TABLE 1
我想我的代码已经结束了(TABLE 1
中的DELETE),但它错过了IF
这个词is not in TABLE 1
$stmt_mot_a_sup = mysqli_prepare($BDD_connect, "DELETE FROM Mots_cles SET mots_cles = ? ");
mysqli_stmt_bind_param($stmt_mot_a_sup, "s", $mot_a_sup);
foreach ($tab_tuto_sauvegarde['Mots_cles_supprimes'] as $Mots_cles_supprimes) {
$mot_a_sup = $Mots_cles_supprimes;
mysqli_execute($stmt_mot_a_sup);
}
答案 0 :(得分:1)
我认为您只想删除没有相应子行的父行,在这种情况下,您可以执行以下操作:
delete from table1
where not exists (
select null from table2 where table2.word = table1.word
)
答案 1 :(得分:1)
您可以使用LEFT JOIN:
DELETE FROM
table1
LEFT JOIN
table2
ON
table1.word = table2.word
WHERE
table2.word IS NULL