【问题标题】:what join use to both two tables两个表的连接使用什么
【发布时间】:2021-01-30 08:24:09
【问题描述】:

我有一张表,其中包含我系统的所有用户,其中包含 userid 和 user_name 列。

每个用户都有一个日历,并且可以与其他用户共享。

这个表有两列,userid是共享日历的用户字段,sharedid是共享日历的用户。

我想创建一个查询来了解某个用户是否不共享他们的日历。

我不明白如何连接两个表来找出答案。

例如,userid=13393 不共享您的日历,此查询返回 0 个结果:

SELECT * FROM vtiger_sharedcalendar WHERE userid=13393

如果我想知道 userid=13393 不与哪些用户共享日历,应该如何加入表格?

谢谢!

【问题讨论】:

  • 请在代码问题中给出minimal reproducible example--cut & paste & runnable code,包括最小的代表性示例输入作为代码;期望和实际输出(包括逐字错误消息);标签和版本;明确的规范和解释。给出尽可能少的代码,即您显示的代码可以通过您显示的代码扩展为不正常的代码。 (调试基础。)对于包含 DBMS 和 DDL(包括约束和索引)的 SQL,并以表格格式作为代码输入。 How to Ask 暂停总体目标的工作,将代码砍到第一个表达式,没有给出你期望的内容,说出你期望的内容和原因。
  • 这是一个常见问题解答。请在考虑发布之前阅读您的教科书和/或手册和谷歌任何错误消息或您的问题/问题/目标的许多清晰、简洁和精确的措辞,有和没有您的特定字符串/名称和站点:stackoverflow.com 和标签;阅读许多答案。反映你的研究。请参阅How to Ask 和投票箭头鼠标悬停文本。如果您发布问题,请使用一个措辞作为标题。

标签: sql subquery inner-join where-clause


【解决方案1】:

如果我想知道 userid=13393 不与哪些用户共享日历,应该如何加入表格?

你可以使用not exists:

select u.*
from users u
where not exists (
    select 1 
    from vtiger_sharedcalendar c
    where c.userid = 13393 and c.sharedid = u.userid
)

【讨论】:

    【解决方案2】:

    如果您想返回没有共享日历并且他们不在另一个表中的用户,我认为您正在寻找的联接是左联接,其他表中不存在的值应该为空。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-09
      • 1970-01-01
      • 2018-07-12
      • 2018-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多