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

MYSQL自加入如何工作?

柯瀚玥
2023-03-14
问题内容

我最近问了一个有关“自我加入”的问题,得到了一个很好的答案。

该查询用于查找事件1之后1天的事件2的ID,开始日期和价格。

html" target="_blank">代码工作正常。 但是我不知道如何。

有人可以尽可能详尽地解释一下-查询的不同部分是什么以及它们做什么?

SELECT event2.id, event2.startdate, event2.price
FROM mm_eventlist_dates event1
JOIN mm_eventlist_dates event2 
ON event2.startdate = date_add(event1.enddate, INTERVAL 1 DAY)
WHERE event1.id=$id

非常感谢您的帮助,无论出于什么原因,我都很难解决这个问题。


问题答案:

我试图理解的方式是在第一块上写出两个列表,分别标记为event1和一个event2。然后在每个列表中列出一些记录(列表将是相同的),现在从以下描述的WHERE开始。

我们正在从两个表中获取数据(确定同一张表使用了两次,但暂时不要理会)

FROM mm_eventlist_dates event1
JOIN mm_eventlist_dates event2

从下至上阅读其余内容可能会有所帮助。

  WHERE event1.id=$id

因此,我们希望来自event1的记录具有指定的记录ID。大概那是一个记录。现在我们找出事件结束后的第二天。

 date_add(event1.enddate, INTERVAL 1 DAY)

现在告诉我们来自event2的记录,它们需要从该日期开始,

ON event2.startdate = date_add(event1.enddate, INTERVAL 1 DAY)

现在,我们确定了两个记录,我们想要什么字段?

SELECT event2.id, event2.startdate, event2.price

哦,就是我们确定起始日期的字段。



 类似资料:
  • 问题内容: 我需要在此表上使用“自我联接”。 我需要使用自我加入来获得与土耳其同年的国家。仅显示国家和年份。 这就是我想要做的。 ^谷歌自我加入,并做到了。 我只得到土耳其。我究竟做错了什么? 问题答案: 你好亲密! 因为您说的是显示A的国家和年份,并限制了土耳其,所以您将只看到土耳其。您需要将selects更改为and 或将where子句更改为。 这是使用交叉联接的,表中的记录越多,交叉联接的速

  • 现在我的代码如下所示: 我需要获取

  • 问题内容: 我刚刚使用MySQL查询浏览器创建了一个新表,并注意到在“自动增量列”下有一个勾号。这是如何运作的? 以编程方式添加到数据库时,是否仅添加一个数字,然后数据库会自动将该数字递增? 每次有新用户在我的网站上注册时,我都希望他们的客户ID(仅整数)自动递增,因此我不必尝试随机生成一个唯一的数字。 可以简单地完成吗? 谢谢! 问题答案: 以编程方式添加到数据库时,是否仅添加一个数字,然后数据

  • 问题内容: 我知道SQL的语法如下: 但是,我不了解它是如何工作的,可能是因为我正在考虑将其视为声明。 例如,如果我在表中有一个字段,其中包含诸如“经理”,“兼职”等名称,那么如何根据角色生成一个具有不同编号的字段。在此示例中,“如果user_role =’经理’,则role_order = 5”。 请注意,我正在寻找一个 教男人如何钓鱼的方法, 而不是 给男人一个钓鱼的方法 。 问题答案: 更像

  • 问题内容: 我有一个CSV文件。它包含140万行数据,因此我无法在Excel中打开该csv文件,因为其限制约为100万行。 因此,我想将此文件导入MySQL工作台中。此csv文件包含以下列 我正在尝试在MySQL工作台中创建一个名为“虚拟”的表,其中包含诸如 CSV文件名为。我在工作台中的代码是这样的: 但我收到类似的错误 问题答案: 我想您缺少ENCLOSED BY子句 并指定csv文件的完整路

  • 问题内容: 创建视图时,我基本上是在创建一个新表,当其中一个表中的数据发生变化时,该表将自动进行处理。那是对的吗? 另外,为什么我不能在视图中使用子查询? 问题答案: 视图的工作方式 类似于表 ,但不是表。它永远不存在;它只是在引用视图名称时运行的准备好的SQL语句。IE浏览器: …相当于运行: MySQLDump将永远不会包含要插入视图中的行… 另外,为什么我不能在视图中使用子查询???? 遗憾