将一个表的id与另一个表中的user_id进行匹配,以获取mysql中的记录

match id of one table to user_id of another table to fetch records in mysql

本文关键字:id 记录 mysql 获取 一个 user 另一个      更新时间:2023-09-26

我有两个表,比方说x和y。我使用两个查询通过一个查询获取x表数据,并从y表中获取与x的id和y的UserId 匹配的所有行

这是我的mysql

包括"config.php";

$sql1= mysql_query("select FirstName,MiddleName,LastName,Gender,Location,Email,Mobile from personaldetails limit 1");
$sql2 = mysql_query("select BookTilte,BookGenre,BookWriter,BookDescription from bookdetails where personaldetails.Id = bookdetails.UserId ")

如果错误,也请提出一些替代解决方案

在这些情况下,您可以从INNER JOIN使用

SELECT FirstName,MiddleName,LastName,Gender,Location,Email,Mobile,BookTilte,BookGenre,BookWriter,BookDescription FROM `personaldetails` as `PD` INNER JOIN `bookdetails` AS `BD` ON `PD`.`Id` = `BD`.`UserId`

注意:mysql_query已弃用,您应该使用mysqli函数

尝试以下查询

$sql1= mysql_query("select a.FirstName,a.MiddleName,a.LastName,a.Gender,a.Location,a.Email,a.Mobile,b.BookTilte,b.BookGenre,b.BookWriter,b.BookDescription from personaldetails as a join bookdetails as b on a.Id=b.UserId  limit 1");

Join将合并这两个表。

ab是两个表的别名。通过使用别名,我们可以指定哪个字段从哪个表中选择。

a.Id=b.UserId用于指定主键和参考密钥

这并没有错,有时这可能是正确的做法。

另一种解决方案可能是

$str = <<<MARKER
SELECT FirstName,MiddleName,LastName,Gender,Location,Email,Mobile 
FROM personaldetails 
INNER JOIN bookdetails ON (personaldetails.Id = bookdetails.UserId)
ORDER BY personaldetails.Id
MARKER;
$sql1= mysql_query($query);

票据,

  • 您不再需要限制,因为它只返回第一行。

  • 对于每个bookdetails,您会发现一个personaldetails行(personaldetails将被复制),

  • 我添加了一个ORDER BY子句来向您展示。

  • 您应该引用主键或索引列,或者添加新的索引