【问题标题】:Select query with distinct from three tables选择与三个表不同的查询
【发布时间】:2018-03-05 23:17:39
【问题描述】:

我有三张桌子

颜色

date,id ,highlightedcolor 

形状

date,id,highlightedshapes

身高

date,id, highlightedheight

所有这些表都有不同的行数,但共享唯一的 id

我需要一个查询来从所有三个表中选择不同的日期和相应的 ID,其中 hightlightedcolor 为黄色, highlightshapes 为正方形, highlightheight 很短

非常感谢任何帮助

试过

   SELECT DATE,ID ,HIGHLIGHTEDCOLOR FROM COLORS WHERE HIGHLIGHTEDCOLOR ='YELLOW' UNION SELECT DATE,ID ,HIGHLIGHTEDSHAPE FROM SHAPE WHERE HIGHLIGHTEDSHAPE ='SQUARE' UNION SELECT DATE,ID ,HIGHLIGHTEDHEIGHT FROM HEIGHT WHERE HIGHLIGHTEDHEIGHT ='SHORT' 

错误

错误:ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT:使用的 SELECT 语句的列数不同

【问题讨论】:

  • 你在3个表中选择的列数据类型相同???
  • 但发布真实代码..您的示例无效
  • 是的,它们具有相同的数据类型
  • 然后显示你正在使用的真实SQL代码
  • 更新您的问题..获取代码..

标签: mysql sql


【解决方案1】:

使用joindistinct

Select distinct t1.date,
                t1.id,
                t1.hightlightedcolor,
                t2.highlightedshapes,
                t3.highlightedheight
from color t1 
INNER JOIN shapes t2 ON t1.Id = t2.Id
INNER JOIN height t3 ON t1.Id = t3.Id
WHERE t1.hightlightedcolor = 'yellow'
AND t2.highlightedshapes ='square'
AND t3.highlightedheight ='short'

【讨论】:

    【解决方案2】:

    这将是最短的解决方案:

    SELECT DISTINCT c.date, c.id
    FROM   color c
           shapes s
           height h
    WHERE  c.id = s.id
    AND    s.id = h.id
    AND    c.hightlightedcolor = 'yellow'
    AND    s.highlightedshapes ='square'
    AND    h.highlightedheight ='short'
    

    【讨论】:

    • 字段列表中的列日期不明确。它不起作用
    猜你喜欢
    • 2014-03-29
    • 1970-01-01
    • 1970-01-01
    • 2012-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-01
    • 1970-01-01
    相关资源
    最近更新 更多