【问题标题】:SQL: Trouble returning distinct like values from a subquery and joinSQL:无法从子查询和连接中返回不同的相似值
【发布时间】:2015-11-10 18:18:42
【问题描述】:

查询:

select DOG_CD,ANIMAL_CD 
from FKAGM
where FKAG = 12024

显示 3 行

DOG_CD - ANIMAL_CD 是列名,每列下方是上述查询产生的 3 个数值,我不知道如何在此处绘制表格来描述它。 =(

有一个名为 Dog_Animal 的表,它有一个名为“Name”的列 (Dog_Animal.Name),我想将其与上述查询结合起来。我想加入 ANIMAL_CD 作为 FKAGM 表和 DOG_ANIMAL 表有共同的 ANIMAL_CD 列。我想在 ANIMAL_CD 列旁边显示“名称”。问题是当我加入表时,它显示的就像 Dog_Animal 表中的每个 DOG_CD 和 ANIMAL_CD 实例(这是数千个),类似于下图。因为 Dog_Animal 表填充了数千个 DOG_CD 和 ANIMAL_CODE 字段。我只想将它限制为上述查询返回的三行(Limit 或 distinct 或其他),并在 Animal_CD 旁边输入 Dog_Animal.Name。我已经为此工作了一个小时,我知道它一定很简单,但我似乎无法让它发挥作用。我不确定是否需要或存在子查询,或者大小写,或者什么。如果您能解决这个问题,我将非常感激!

DOG_CD - ANIMAL_CD - Dog_Animal.Name跟刚才一样的3行数据一个名字包含了

【问题讨论】:

    标签: mysql sql join subquery distinct


    【解决方案1】:
    select 
    f.DOG_CD,f.ANIMAL_CD,d.name
    from FKAGM f
    inner join dog_animal d
    on d.animal_cd = f.animal_cd
    where f.FKAG = 12024;
    

    inner join 会为你工作。如果您只需要将其限制为 3 个结果,请在查询末尾添加 limit 3 order by f.dog_cd

    【讨论】:

    • 我认为您不需要限制 3。因为正如 OP 所说,原始查询已经返回 3。内部连接应该足够了。
    • 此查询返回 948 行。 :( 我知道这必须很接近。我只是不知道为什么它会返回这么多值。
    • 它们是重复的吗?如果是这样,请使用distinct
    • 它们不是重复的。这也让我很困惑。 f.fkag =12024 不应该只减少到该值的值吗?我只是不知道它在哪里得到所有这些额外的行。 * 从 FKAGM 表中选择它自己有 5.5k 行,而 dog_animal 有 3.1k 行,所以我有点迷失了这 948 的来源。某种子查询可能会起作用吗?或 CASE 我没有使用 CASE 的实际经验。
    • 如果您在问题中发布表结构会更好。
    猜你喜欢
    • 2019-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多