查询不在另一个表中的结果

时间:2013-05-17 13:13:33

标签: php mysql

我正在尝试创建一个脚本,该脚本将在表格中搜索与另一个表格中的艺术家名称不匹配的艺术家名称

$sql = mysql_query("SELECT artist FROM artists WHERE artist NOT IN (select artist from singer) LIMIT 4") or die(mysql_error());

运行后,它将艺术家插入歌手表中,然后如果我再次运行它将返回说没有结果,而不是由艺术家表中的前4位艺术家跳过,因为他们在歌手表中并抓住接下来4

我做错了什么?

1 个答案:

答案 0 :(得分:0)

您的SELECT声明没有任何问题。这SQL Fiddle证明了这一点。使用架构部分底部的注释INSERT语句,它将返回前四个可行记录(按预期方式)。然后,如果您取消注释这些行并重建架构,您会发现它返回接下来的四个可行记录(如预期的那样)

所以,如果您实际上为收集之后检索的发出了INSERT,而之前要求更多那么 > INSERT声明有问题。

相比之下,如果您 INSERT 之前发出singer 要求更多,那么您需要更具动态性SQL语句和Fiddle也显示该语句(尽管是静态的)。用于更动态语句的PHP可能如下所示:

$offset = 0;
$sql = true;

while ($sql) {
    $sql = mysql_query("SELECT artist FROM artists WHERE artist NOT IN (select artist from singer) LIMIT $offset, 4") or die(mysql_error());
    $offset += 4;
}