MYSQL内部连接作为多行结果
我的数据库里有两张桌子:菜单和菜肴。(我已经翻译了列和数据库名称,如果没有意义就不用麻烦了) 菜单表MYSQL内部连接作为多行结果,mysql,Mysql,我的数据库里有两张桌子:菜单和菜肴。(我已经翻译了列和数据库名称,如果没有意义就不用麻烦了) 菜单表 id date_begins date_ends id_dishes_monday id_dishes_tuesday id_wednesday 1 xxxxx xxxxx 1 2 3 餐具台 id
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
我想从菜单表中选择星期一、星期二、星期三,并从菜谱表中检索多行。
我尝试使用这个查询,但它只返回一行,我不知道为什么
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
此查询在此示例中生成的内容:
我想要什么:
请注意,表格数据只是为了举例说明,我想知道为什么这个查询没有很好地工作,因为它是正确的查询。因为您限制了输出
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,它将结果限制在第一行“如果没有意义,请不要麻烦”-好的,我的意思是不关注数据库或列名,只关注逻辑,即使它们对您没有意义。就是这样。我认为限制器是用于菜单表的,但没有注意到这一点。感谢这真的是一个交叉连接——但MySQL并不关心这些微妙之处。
id date dynamic_dishes
1 2016/03/02 BLOB
2 2016/03/03 BLOB
3 2016/03/04 BLOB
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