我有两个表:publick_feed 和 users
我想从 public_feed 中选择所有内容,并从 users 中选择三列,其 id 与 user_id 在 public_feed 并将从 public_feed 返回的行分配给用户表中的列(通讯员)
我试试这个:
<?php
$sql = "
SELECT * FROM public_feed
WHERE user_id IN
(SELECT id FROM users) AND
(SELECT Firstname,Lastname,Avatar FROM users WHERE id IN(SELECT user_id FROM public_feed))
";
$query = mysqli_query($dbc_conn,$sql);
if(mysqli_num_rows($query) > 0){
while($row = mysqli_fetch_assoc($query)){
//echo rows with correspondent details from the users table
echo $row['user_id'];
}
}
<?
如有任何帮助,我们将不胜感激。 谢谢。
最佳答案
或者如果 public_feed 中没有用户,而你仍然想获取用户数据,则使用 left join 的版本
SELECT
u.*, f.*
FROM
public_feed f LEFT JOIN
users u ON f.user_id = u.id;
因为作者要求解释,这里是:
首先我们将使用表名别名来缩短查询
public_feed f
和
users u
我们是说要用别名引用表。当然*
表示我们要选择所有列
SELECT users.*, public_feed.*
等于
SELECT u.*, f.*
当然你可以使用任何其他字母作为别名
接下来我们说 public_feed.user_id 必须等于 users.id。但是当公共(public)提要条目不存在时,只显示具有空值的列。这就是我们使用 LEFT JOIN 而不是 INNER JOIN 的原因。通常 JOINS 用于从多个相关表中获取相关数据。
ON
关键字表示表中列的值必须等于才能满足请求
关于php - 如何在 mySql 上加入 2 个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38970542/