-1

假设我有一个包含两个表的数据库:“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”表会一直变化,或者我是否需要一个循环并为“whatToEat”中的每个对象一个一个地查询“food”表?

编辑

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

例子:

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

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

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

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
4

3 回答 3

2

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

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

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

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

试试看,如果能解决你的问题...

于 2012-04-27T05:57:44.777 回答
1
SELECT * FROM matches_updated JOIN matches
         ON matches_updated.match_id == matches.match_id
         WHERE matches_updated.user == "Tim"

--

也许您想要一个JOIN 语句

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

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

于 2012-04-27T04:57:10.633 回答
1
SELECT * FROM food WHERE username='John'
于 2012-04-27T05:11:16.633 回答