当前位置: 首页 > 面试题库 >

从表中选择行,其中另一个具有相同ID的表中的行在另一列中具有特定值

董鸣
2023-03-14
问题内容

在MySQL中:

如果我们有两个表:

comments
key    |    value
=================
1      |    foo
2      |    bar
3      |    foobar
4      |    barfoo

和:

meta
comment_key    |    value
=========================
1              |    1
2              |    1
3              |    2
4              |    1

我想从意见comment表中具有相应comment_keymeta具有特定表value(该valuemeta表)。

例如,我想选择所有从该行comment有一个表value1meta表:

我希望这些结果:

key    |    value
=================
1      |    foo
2      |    bar
4      |    barfoo

而如果我选择所有从该行comment表中有一个value2meta表:

我希望得到这样的结果:

key    |    value
=================
3      |    foobar

我真的希望有人能提供帮助,谢谢大家!

我想我需要参加吗?任何指针都将是很好的,并且如果可能的话,可以做一个简短的解释,以便我可以找出我要去的地方->这样我下次就知道了!


问题答案:

实际上,我不建议为此使用JOIN-
或更确切地说,我建议使用“半联接”,这是一个关系代数概念,未在SQL中直接表达。半联接本质上是一种联接,您只想从一个表中检索记录,但前提是它们在不同的表中具有相应的记录。

在SQL符号,这个概念间接表达,通过使用一个IN子句,具有子查询:

SELECT key, value
  FROM comments
 WHERE key IN
        ( SELECT comment_key
            FROM meta
           WHERE value = 1
        )
;

(MySQL实际上最终会将其内部翻译回半联接-本质上是一种简并的内部联接-但该IN子句是在原始SQL中表达它的自然方式。)



 类似资料:
  • 问题内容: 如何使用JOIN从一个表中选择所有列,从另一个表中仅选择一些列?在MySQL中。 问题答案: 只需使用表名: 这将选择所有列和列和从。

  • 问题内容: 如何选择一个表中所有未出现在另一表中的行? 表格1: 表2: 表1中不在表2中的行的示例输出: 也许这样的事情应该工作: 问题答案: 如果您在另一条注释中提到有300列,并且想要对所有列进行比较(假设这些列的名称相同),则可以使用a 隐式联接两个表之间所有匹配的列名称,以便不必繁琐地手动输入所有加入条件:

  • 问题内容: 我在我的网站中使用带有php的sql server 2008 r2。我有2张桌子。 1是给员工的。 2是上班 我想进行查询,以便给我提供类型为<3的员工姓名的工作描述。 就是说我想得到这样的结果。 同样地 那么我如何使用sql查询实现此结果呢? 我无法更改表架构。 我试图与case语句一起使用,但无法正常工作。 请帮我使这个工作.. 问题答案: 它的内容并不能完全回答问题,但是会建议您

  • 问题内容: 这是我的代码: 您可以看到我要执行的操作,但是我不确定如何正确编写此查询。 我得到的继承人错误: 警告:mysql_fetch_assoc():提供的参数不是有效的MySQL结果资源 这是我的mysql_fetch_assoc: 问题答案: 尝试改变…的喜欢 …至…

  • 问题内容: 我在尝试从不在另一个表中的表中选择特定条目时在MySQL中遇到问题。我知道这句话听起来很疯狂,但这是我要尝试的一个例子。 表用户: 表文章: 表格视图(如果用户查看了特定的文章,则用于存储数据): 现在,我试图选择那些尚未阅读特定文章的用户,例如ID为10的文章。因此,他们在views表中没有条目。 我希望现在更有意义。感谢您的回答。V. 问题答案:

  • 我的数据库中有两个表。一个表包含有关用户的信息,而另一个表包含有关预订的数据。当用户进行预订时,userid将被放置在预订表中。现在,我想展示一张用户的照片,其中包括预订的备注和日期,但是照片在users表中。 这是我的两张桌子: null null