首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL根据其他表值从表中选择

问MySQL根据其他表值从表中选择
EN

Stack Overflow用户
提问于 2014-10-11 00:21:47
回答 2查看 54关注 0票数 0

很抱歉打扰你们,但我需要你们专业人士的一点帮助...

我有两张表:

代码语言:javascript
复制
Table1:
ID, date, menu1, menu2, menu3, menu4

和

代码语言:javascript
复制
Table2:
ID, name, somethingElse, somethingElse2

在Table1 (menu1,menu2,menu3,menu4)中是Table2的ID。我需要的是查询"date“值到数据库中,并从Table2 (取决于Table1的menuX值)中获取四行。有什么建议吗?

EN

回答 2

Stack Overflow用户

发布于 2014-10-11 00:32:47

阅读MySQL-docs并在JOINing上查找MySQL-Tutorial。在那里你会找到类似这样的东西:

用JOIN做一个简单的SELECT,告诉MySQL使用ID作为联结列:

代码语言:javascript
复制
SELECT Table1.`date` FROM Table1 
JOIN Table2 ON Table1.ID = Table2.ID
WHERE Table1.menu1 = "someValue"
AND Table1.menu2 = "someOtherValue"

如果运行速度有点慢,请尝试在其中一个表id- INDEX上添加一个INDEX:

代码语言:javascript
复制
ALTER TABLE Table1 ADD INDEX myIndex (ID)

您可以通过以下语句检查所检查的行数

代码语言:javascript
复制
EXPLAIN SELECT Table1.`date` FROM Table1 ...
票数 1
EN

Stack Overflow用户

发布于 2014-10-11 18:13:11

好了,现在我明白你的问题了。多亏了您提供的示例,下面的查询应该可以解决您的问题。这里的诀窍是使用UNION将一个查询结果附加到另一个查询结果之后。这样做四次就能达到目的:

代码语言:javascript
复制
SELECT b.* FROM dailymenu as a JOIN menu as b ON a.menu1 = b.ID WHERE a.`date` = '2014-10-08'
UNION
SELECT b.* FROM dailymenu as a JOIN menu as b ON a.menu2 = b.ID WHERE a.`date` = '2014-10-08'
UNION
SELECT b.* FROM dailymenu as a JOIN menu as b ON a.menu3 = b.ID WHERE a.`date` = '2014-10-08'
UNION
SELECT b.* FROM dailymenu as a JOIN menu as b ON a.menu4 = b.ID WHERE a.`date` = '2014-10-08'

你的菜单听起来很可口:-)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26303833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档