我必须包含类别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']; } }
答案 0 :(得分:0)
您的查询没有得到任何结果,因为查询语法不正确。检查错误(或在脚本之外的其他工具中执行查询)应该已经通知您。
SELECT name
FROM `table1`
WHERE `cat` = 1
AND name NOT IN (
SELECT name FROM `table1` WHERE `cat` = 2
)
请注意AND name
前面添加的NOT IN
。