【问题标题】:Retrieve a column from a table by comparing two different columns from different databases, using PHP MySql通过比较来自不同数据库的两个不同列,使用 PHP MySql 从表中检索列
【发布时间】:2014-03-29 16:19:37
【问题描述】:
SELECT image_name FROM image_uploader.image_base WHERE image_uploader.image_base.image_id != (select image_id from user_seen.{$value}_seen)

数据库结构:

Database ---------------> Table --------------> column
image_uploader ---------> image_base ---------> image_name
image_uploader ---------> image_base ---------> image_id
user_seen --------------> {$value}_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({$value}_seen) 中的 Id(image_id) 和如果该图像的 Id 在当前 table2 中,则不会返回 table1 中的名称。

上述语句仅在 table2 中只有一个条目时才有效。当表2有两个以上条目时,php返回->Subquery returns more than 1 row

我需要它来返回数组中table2 中不存在的名称。

【问题讨论】:

  • 还有什么办法可以将结果的数量限制在一个特定的范围内。

标签: php mysql sql sql-server database


【解决方案1】:

如果您的子查询返回超过 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());

【讨论】:

  • 有没有办法将结果的数量限制为特定的数量。
  • 当然。您可以使用LIMIT X 仅获取前 X 行
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-06
  • 2022-01-02
  • 2021-12-16
  • 1970-01-01
  • 2016-02-22
相关资源
最近更新 更多