Php 获取X个特定行数。Mysql查询
假设我有一个数据库,有两个表:“食物”和“whatToEat” 我查询“whatToEat”并找到3行: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
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 = ?)