mysql - 将两个 MySQL 查询合并为一个

标签 mysql sql select left-join in-operator

在我的数据库中,我有两个表:回复和主题。

我正在尝试制作一个“贡献”页面,显示用户已经开始或回复了哪些话题。

Inside Replies 是“ThreadId”和“Poster”,它们指定被回复的线程的 Id,Threads 中的每一行都有一个 Id 列和一个“Poster”列。

我正在尝试查询以获取用户已在其中发布或发布的所有 THREADS 的行。

例子:

$myUsername = "Bob";
$q = mysql_query("SELECT * FROM `Threads` WHERE `Poster`='$myUsername'
OR (another query to find if they had a row in Replies matching `ThreadId`='$tid'
AND `Poster`='$myUsername')");

谢谢

最佳答案

您将需要使用 IN 子句来指定线程 ID 应该在回复表中的查询返回的那些中。这样的事情是我正确理解你的表的结构。

SELECT * FROM Threads WHERE Poster = $myUsername OR Id IN (
SELECT ThreadId FROM Replies WHERE Poster = $myUsername
)

关于mysql - 将两个 MySQL 查询合并为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10847303/

相关文章:

php - 如何在 Wordpress 中为损坏的远程服务器 URL 设置默认缩略图?

java - 是否可以从 Java 在 MySQL 中创建新帐户?

php - 无法将 Illuminate\Database\Query\Builder 类型的对象用作数组

java - SQL返回数据库中不存在的所有id并传入sql

MySql 选择第三个表中不存在的连接行

MySQL SELECT 子查询

php - 如何捕获第二个粗体文本并将其存储到数据库中?

php - 在 mySQL 数据库中插入多个数组值

javascript - 无法读取 null 的属性 'load'

mysql - 从多个字段的合并中选择所有不同的值 MySql