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

mysql加入限制1

曹浩淼
2023-03-14
问题内容

假设我有两个表一对一的关系。

而且,我想从每个主记录中选择列,并从相关表中选择第一个记录。

我尝试了一些方法,但没有成功……

在这里,我结束了这个SQL提琴:

http://sqlfiddle.com/#!2/39fdb/3

那里的问题是它不能从子选择中引用a.ID。

当然,这行不通,但这只是我能想到的

select a.*,b.* from event a left join 
(select * from event_pictures where a.ID=article limit 1)
b on a.ID=b.article;

关于如何解决它的任何想法?


问题答案:

不可以,您无法a.ID在与相连的子选择中进行引用a。您可以执行以下操作,但是最好提供一个订购单。否则,将没有“第一”行。将选择表b中的(或多或少)随机行:

select a.*, b.* 
from event a 
  left join event_pictures b
    on b.PK =                        --- the PRIMARY KEY
       ( select bb.PK                --- of event_pictures 
         from event_pictures bb 
         where a.ID = bb.article
         ORDER BY bb.something 
         limit 1
       ) ;


 类似资料:
  • 目前我有以下查询: 产出: 它可以工作,但在加入前限制注释表。结果是,它选择前5个注释并映射它。id为5的所有评论将被忽略。 谢谢

  • 我有两张这样的桌子: 我需要根据一些标准获取CHANGESET记录列表,并且只加入一个DECISION记录,最后一个基于dateTimeStamp。 所以,我有一个这样的查询: 或者,我可以使用以下查询获得相同的结果: 我需要的是用QueryDSL编写它。我尝试了这样的方法: 并加入到: 但它根本不起作用,因为或不基于

  • 问题内容: 上面的查询将返回前10个等级。 如何修改,或者是否存在另一种语法来查询第10位到第20位? 问题答案: 这真的是基本的东西。您应该使用: http://dev.mysql.com/doc/refman/5.5/en/select.html 两个参数10,10是(Offset,Limit),因此它将检索第11-20行。 9,11将需要获得第10-20名。

  • 问题内容: 有没有一种简单的方法可以将GROUP BY结果限制在前2位。以下查询返回所有结果。使用“ LIMIT 2”将整个列表减少到仅前2个条目。 结果如下: 谢谢乔恩 根据要求,我附上了表格结构和一些测试数据的副本。我的目标是创建一个视图,该视图具有每个唯一的rating_name的前2个结果 问题答案: 我认为MySQL中没有简单的方法。一种方法是通过为按rating_name分组的每一行生

  • 问题内容: 如果我在表中有一列具有类型字段,并且如果我尝试插入长度为16的数据,MySQL会提示错误 有谁知道为什么MySQL中的VARCHAR字段采用固定长度?另外,基于给定的大小,每个记录的VARCHAR字段会占用多少字节? 问题答案: 如果将一列设置为允许的最大字节数为15,则在不修改该列以使其支持超过15个字符的情况下,最多不能传递15个字符。如果存储4个字符串,则只能使用约4个字节可能的

  • 问题内容: 嗨,我必须在具有大量ID的MySQL语句中使用IN条件。 例 IN语句可以包含的项是否有限制? 问题答案: 没有,请查看有关IN功能的手册: 列表中的值数仅受max_allowed_pa​​cket值限制。