Php 获取X个特定行数。Mysql查询

Php 获取X个特定行数。Mysql查询,php,mysql,sql,Php,Mysql,Sql,假设我有一个数据库,有两个表:“食物”和“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 t

假设我有一个数据库,有两个表:“食物”和“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”表将一直更改,所以是否可以动态地编写它,或者我是否需要一个循环并针对“whatToEat”中的每个对象逐个查询“food”表

编辑

以上只是一个例子,真实的场景是一个在线游戏。当比赛轮到球员时,他会被放在“比赛更新”表上。这个表只保存他的名字和匹配的id(或者匹配项,因为他可以同时在多个中)。当玩家收到更新时,我想检查他是否有任何需要更新的匹配(查询“matches_updated”表),然后从“matches”表中提取数据并返回给他,其中存储了关于匹配的所有信息

例如:

玩家Tim查询“mathces_updated”表,发现他有2个新的匹配项需要更新:

   match_id   username
    1          Tim
    2          Tim
    2          Lisa
    1           John
    3           John
。。。他现在想获得有关这些匹配的信息,这些信息存储在“matches”表中:

--

也许你想要一份工作


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

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

SELECT * FROM food WHERE username='John'
实际上,这取决于查询的表有什么共同点

所以如果假设食物是一个公共列,那么查询如下内容

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

试一试,如果它解决了你的问题…

你的问题取决于你的最终目标是什么。你想让用户John吃掉所有的食物吗?事实上,我不清楚这个查询的逻辑。那是
(p和q)还是r或s
,还是
p和(q或r或s)
?我相信并且可能比OR优先级更高(因此第一个版本是如何评估的)。好吧,最好的编写方法是在中使用
其中username='John'和typeOfFood在('Apple','Banana','Milk')但仍在试图弄清楚他想做什么。谢谢回复。我编辑我的问题。请看上面谢谢你的回复。我编辑了上面的问题,并包括了真实案例。你的解决方案好吗?我还是不知道你想做什么。请举例说明您要使用的两个表以及查询结果。@user1251004:请参阅编辑后的答案。我还没有测试过这个,但是语法应该很接近。
SELECT * FROM food JOIN whattoeat
         ON food.username == whattoeat.username
         WHERE food.username == "John"
SELECT * FROM food WHERE username='John'
select * from food where food in (select food from whattoeat where username = ?)