获取X个特定行。 Mysql查询

时间:2012-04-27 04:53:22

标签: php mysql sql

假设我有一个包含两个表的数据库:“food”和“whatToEat”。

我查询“whatToEat”并找到3行:

id    Food     username
 1    Apple      John
 2    Banana     John
 3    Milk       Linda

如果我想从“食物”表中获取这些,我猜我可以做这样的事情:

SELECT * 
  FROM food 
 WHERE username='John' AND typeOfFood = 'apple' 
    OR typeOfFood = 'Banana' OR typeOfFood = 'Milk'

...但是有可能动态地写这个,因为“whatToEat”表会一直改变,或者我是否需要循环并逐个查询“食物”表中的每个对象。吃什么”?

修改

以上只是一个例子,真实的场景是在线游戏。当玩家进入游戏时,他会选择“matches_updated”表。这张表只保存他的名字和比赛的id(或者因为他可以同时在几个比赛中匹配)。当玩家回复更新时,我想检查他是否有任何需要更新的匹配(查询“matches_updated”表),然后拉出数据并从“匹配”表返回给他,其中包含所有信息关于比赛存储。

示例:

玩家蒂姆查询“mathces_updated”表并发现他有2个需要更新的新匹配:

   match_id   username
    1          Tim
    2          Tim
    2          Lisa
    1           John
    3           John

......他现在想获得有关这些匹配的信息,这些信息存储在“匹配”表中:

match_id   match_status player1Name Player1Score Player2Name Player2Score
   1           1           John         123         Tim          12
   2           1           Lisa          4          Tim          15
   3           1           John          0          Lisa         0

3 个答案:

答案 0 :(得分:2)

我不确定我是否正确理解了这个问题。

实际上这取决于查询表有什么共同之处。

所以如果假设食物是一个常见的列,那么查询这样的东西......

select * from food where food in (select food from whattoeat where username = ?)

尝试一下,如果它解决了你的问题......

答案 1 :(得分:1)

SELECT * FROM matches_updated JOIN matches
         ON matches_updated.match_id == matches.match_id
         WHERE matches_updated.user == "Tim"

-

也许你想要一个JOIN statement

SELECT * FROM food JOIN whattoeat
         ON food.username == whattoeat.username
         WHERE food.username == "John"

我很难理解你想要的结果是什么 - 发布两个表的例子,以及你想要的查询结果可能会有所帮助。

答案 2 :(得分:1)

SELECT * FROM food WHERE username='John'