删除两个表之间的重复条目

时间:2015-01-28 23:17:22

标签: php mysql

我必须包含类别cat 1和cat 2

的表格
| cat| name   |
===============
| 1  | PHP    |
| 1  | Jee    |
| 1  | VB.NET |
| 2  | PHP    |
| 2  | Jee    |
| 2  | VB.NET |
| 1  | C#     |

正如您所见,PHP,Jee和VB.NET是cat 1和cat 2之间的常见记录。

我想只选择来自cat 1的名字,这些名字在cat 2上没有重复 - > C#

我尝试过这样的事情:

$query="SELECT name FROM `table1` WHERE `cat` = 1 
        NOT IN ( SELECT name FROM `table1` WHERE `cat` = 2  )";

但它给出了无结果空白页

更新:我自己找到了答案:

$query="SELECT name FROM `table1` WHERE `cat` = 1";
$result = mysql_query($query);
while( $row = mysql_fetch_array($result ))

{

$query2="SELECT name FROM `table1` WHERE `cat` = 2 and name =".$row['name'];
$result2 = mysql_query($query2);
$row2 = mysql_fetch_array($result2)

if($row2['name']==""){

echo $row['name'];

}

}

1 个答案:

答案 0 :(得分:0)

您的查询没有得到任何结果,因为查询语法不正确。检查错误(或在脚本之外的其他工具中执行查询)应该已经通知您。

SELECT name
FROM `table1`
WHERE `cat` = 1 
AND name NOT IN (
    SELECT name FROM `table1` WHERE `cat` = 2
)

请注意AND name前面添加的NOT IN