简体   繁体   中英

Get X number of specific rows. Mysql query

Say I have a database with two tables: "food", and "whatToEat".

I query the "whatToEat" and find 3 rows:

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

If I want to get those from the "food" table, I can just do something like this i guess:

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

... but is it possible to dynamically write this, since the "whatToEat" table will change all the time, or do I need a loop and query the "food" table one by one for each of the objects in "whatToEat"?

EDIT

The above is just an example, the real scenario is an online game. When it's a players turn in a game, he's put on the "matches_updated" table. This table just holds his name, and the id of the match (or matches since he can be in several at the same time). When a player recive an update, I would like to check if he have any matches that needs to be updated (query "matches_updated" table), and then pull the data and return to him from the "matches" table, where all the information is stored about the matches.

Example:

The player Tim query the "mathces_updated" table and find he have 2 new matches that needs to be updated:

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

... He now want to get the information about these matches, which is stored in the "matches" table:

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

I am not sure whether I understand the question correctly.

Actually It depends on the queried tables have what in common.

so if suppose food is a common column, then query something like this...

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

Try it out, if it solves your problem...

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

--

Perhaps you want a JOIN statement ?

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

I'm having a really hard time trying to understand what your desired result is - posting example of both tables in question, and the desired result of your query, might help.

SELECT * FROM food WHERE username='John'

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM