SELECT image_name FROM image_uploader.image_base WHERE image_uploader.image_base.image_id != (select image_id from user_seen.{$value}_seen)
数据库结构:
数据库----------------->表---------------->柱 image_uploader -----------> IMAGE_BASE -----------> IMAGE_NAME image_uploader -----------> IMAGE_BASE -----------> image_id user_seen ----------------> {$值} _seen --------> image_id
代码:
$query = mysql_query("SELECT image_name FROM image_uploader.image_base WHERE image_uploader.image_base.image_id != (select image_id from user_seen.{$value}_seen)") or die(mysql_error());
while($data = mysql_fetch_array($query)){
echo $data["image_name"];
echo "<br />";
}
我尝试使用上面的语句通过比较table1和table2中的Id(image_id)来从database1(image_uploader)中检索table1(image_base)中的名称(image_name)({$如果该图像的Id位于当前table2中,则不会返回table1中的名称。
只有在table2中只有一个条目时,上述语句才有效。当表2有两个以上的条目时,php返回 - &gt;&#34;子查询返回超过1行&#34;。
我需要它来返回数组中不存在于table2中的名称。
答案 0 :(得分:0)
如果您的子查询返回的行数超过1行,则应使用NOT IN
代替!=
:
$query = mysql_query("SELECT image_name FROM image_uploader.image_base WHERE image_uploader.image_base.image_id NOT IN (select image_id from user_seen.{$value}_seen)") or die(mysql_error());