当前位置: 首页 > 知识库问答 >
问题:

从MySQL联接中的第一个表中获取所有结果

公孙盛
2023-03-14
 SELECT R.name room_name,
        R.id room_id,
        UD.discount 
   FROM user_discounts UD 
   LEFT 
   JOIN rooms R 
     ON R.id = UD.room_id
  WHERE UD.user_id = 1482
    AND UD.hotel_id = 2

共有1个答案

公冶鸣
2023-03-14

如果您想要所有房间,请反转表关系

SELECT `R`.`name` as `room_name`, `R`.`id` as `room_id`, `UD`.`discount` as `discount`
FROM  `rooms` as `R`
LEFT JOIN `user_discounts` as `UD` ON `R`.`id`= `UD`.`room_id`
             AND`UD`.`user_id` = '1482'
             AND `UD`.`hotel_id` = '2'

但是还需要修改where子句。它们可以代替原来的where子句作为联接条件的一部分。

where子句的影响很容易被忽略,但是如果在where子句中引用左联接表,则还必须允许该表中的数据为NULL。例如

SELECT `R`.`name` as `room_name`, `R`.`id` as `room_id`, `UD`.`discount` as `discount`
FROM  `rooms` as `R`
LEFT JOIN `user_discounts` as `UD` ON `R`.`id`= `UD`.`room_id`
WHERE (`UD`.`user_id` = '1482'
   AND `UD`.`hotel_id` = '2'
      )
   OR `UD`.`room_id` IS NULL
SELECT `R`.`name` as `room_name`, `R`.`id` as `room_id`, `UD`.`discount` as `discount`
FROM  `rooms` as `R`
LEFT JOIN `user_discounts` as `UD` ON `R`.`id`= `UD`.`room_id`
             AND`UD`.`user_id` = '1482'
             AND `UD`.`hotel_id` = `R`.`hotel_id`
WHERE `R`.`hotel_id` = 2
 类似资料:
  • 问题内容: 我只是不明白一件事。当我输入时: 我得到: 但是选择似乎根本不起作用: 那怎么可能?我的意思是,表明存在一个名为“ db”的表… 其次,当我键入:它给我: 我能够做到: 我得到了一些结果。这是为什么?为什么我只能选择大写字母呢?而且,如何从仅以大写形式给出的表中进行选择?干杯 如果很重要:我以root用户身份登录到我的数据库。 问题答案: “ information_schema”仅具

  • 问题内容: 假设有两个表: 表A 表B 表之间的联系是 messageID 字段。 我想要一个查询来生成这样的结果,在该查询中,我将所有字段从表A中拉出,并对表B中每条消息的注释数进行计数,如下所示: 我已经尝试过这样的事情: 但这是行不通的。有任何想法吗?似乎应该可以在一个查询中执行此操作。我正在使用MSSQL。谢谢你的帮助。 问题答案: 标量子查询将起作用: 与往常一样,有很多方法可以改变这只

  • 问题内容: 这是我的桌子: 每篇文章可以具有一个或多个与之关联的图像。我想在页面上显示最后40篇书面文章,以及与该文章相关的最新图像。我不知道的是如何与article_images表联接,并且仅检索单个行。 编辑:解决方案必须表现良好,这一点很重要。到目前为止,我所看到的解决方案(使用派生表)需要一分钟或更长时间才能完成。 问题答案: 在查看了其他答案之后,它帮助我意识到了一个潜在的问题。 Art

  • 问题内容: 没有多个子查询,我想不出一个查询此问题的好方法。我无法重组表,所以这不是一种选择。设置如下: 面对面的每个ID的类型均为person_status_types。我需要提取的是每个id的本人的status_type_name。 所以return语句看起来像这样: 现在,我只在做4个子查询,但是必须有一种更清洁的方法。另外,如果您想提一个更好的数据库结构,我也很乐意为将来的数据库生产做准备

  • 我试图使用查询特定的产品类型和大小(两个diff表中的列),从以下所有表中获取数据<我无法得到想要的结果,所以一些指导将非常有用。 请在下面找到我迄今为止尝试过的细节。 PK:主键,FK:外键 以下是表结构,下面的表(提到)映射到另一个表。 实体类: 存储库: 我使用了以下查询(一个接一个),基于prod_类型和大小,我需要从所有表中获取数据。 注:尺寸不是表MC\U产品类型的一部分。数据团队已告

  • 本文向大家介绍从第一个表中获取最大ID值,然后使用MySQL INSERT INTO select插入另一个表中的所有ID。,包括了从第一个表中获取最大ID值,然后使用MySQL INSERT INTO select插入另一个表中的所有ID。的使用技巧和注意事项,需要的朋友参考一下 让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 这将产生以下输出