MYSQL内部联接作为多行结果

时间:2016-03-02 09:20:24

标签: mysql

我的数据库上有两个表:菜单和菜单。 (我已翻译了列和数据库名称,如果没有意义,请不要理会)

菜单表

id     date_begins       date_ends      id_dishes_monday  id_dishes_tuesday  id_wednesday              
 1        xxxxx             xxxxx              1                   2                3

菜肴表

id      date               dynamic_dishes
 1      2016/03/02              BLOB
 2      2016/03/03              BLOB
 3      2016/03/04              BLOB


我想从菜单表中选择id_dishes_monday,id_dishes_tuesday,id_wednesday并从Dishes Table中检索多行。

我尝试使用此QUERY,但它只返回一行,我不知道为什么。

SELECT D.* FROM Menu M INNER JOIN Dishes D WHERE D.id IN (M.id_dishes_monday,M.id_dishes_tuesday,id_dishes_wednesday) ORDER BY M.id DESC LIMIT 1


此查询在此示例中生成的内容

 id      date               dynamic_dishes
 1      2016/03/02              BLOB


我想要的是什么:

     id      date               dynamic_dishes
     1      2016/03/02              BLOB
     2      2016/03/03              BLOB
     3      2016/03/04              BLOB

请注意,表数据仅用于举例说明,我想知道为什么这个查询不能正确查询它。

1 个答案:

答案 0 :(得分:2)

因为你限制你的输出!

SELECT D.* 
FROM Menu M
INNER JOIN Dishes D
WHERE D.id IN (M.id_dishes_monday,M.id_dishes_tuesday,id_dishes_wednesday)
ORDER BY M.id DESC

我在查询结尾处删除了LIMIT 1,将结果限制为第一行