0

table1からリンクを取得し、このリンクがtable2とtable3に存在するかどうかを確認するMySQLクエリを作成したいと思います。

現在、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 に答える