0

我想进行一个 MySQL 查询,该查询从 table1 获取链接并检查该链接是否存在于 table2 和 table3 中。

现在我在做2个查询,但是我想将2个查询合并为1个,并保证返回10个结果?(第一个之后,目前如果mysql_num_rows($rez)>0,返回结果会小于10)

谢谢。

$result = mysql_query("SELECT id,link FROM table1 WHERE Order By id DESC LIMIT 0,10"); 
while ($row = mysql_fetch_array($result)){
  $rez = mysql_query("(SELECT link FROM table2 WHERE link='".mysql_real_escape_string($row['link'])."') UNION (SELECT link FROM table3 WHERE link='".mysql_real_escape_string($row['link'])."')");
  if(mysql_num_rows($rez)==0){
    //do stuff with $row['link'];
  }
}
4

2 回答 2

1

您可以使用子查询来完成此操作

SELECT id, link FROM table1 WHERE (link IN (SELECT link FROM table2)) OR (link IN (SELECT link FROM table3)) LIMIT 10

我的格式可能略有偏差,并且似乎有更好的方法来执行该查询,但请查看子查询,因为我认为这些会让您朝着您想要的方向前进

于 2012-12-05T17:36:25.260 回答
0

假设您要求查找 table2 或 table3 中不存在的行。如果您尝试查找其中任何一个中存在的行,请使用上面发布的查询。

SELECT id, link FROM table1 WHERE link NOT IN (SELECT link FROM table2) AND link NOT IN (SELECT link FROM table3) ORDER BY id DESC LIMIT 0,10
于 2012-12-05T17:52:06.560 回答