gpt4 book ai didi

mysql - 5 个表中的复杂选择查询

转载 作者:行者123 更新时间:2023-11-29 07:16:51 24 4
gpt4 key购买 nike

我有 5 张 table :

  1. mp3
  2. 专辑
  3. 混音
  4. 用户
  5. 喜欢

喜欢表:

╔════════╦══════════╦═════════╦═════════════╦═════════════════════╗
║ id ║ user_id ║ type_id ║ target_id ║ like_date ║
╠════════╬══════════╬═════════╬═════════════╬═════════════════════╣
║ 1 ║ 1 ║ 1 ║ 1049 ║ 2016-05-23 19:50:41 ║
╠════════╬══════════╬═════════╬═════════════╬═════════════════════╣
║ 2 ║ 2 ║ 2 ║ 457 ║ 2016-01-09 19:50:42 ║
╠════════╬══════════╬═════════╬═════════════╬═════════════════════╣
║ 3 ║ 2 ║ 3 ║ 457 ║ 2016-01-09 19:50:42 ║
╠════════╬══════════╬═════════╬═════════════╬═════════════════════╣
║ 4 ║ 2 ║ 1 ║ 457 ║ 2016-01-09 19:50:42 ║
╠════════╬══════════╬═════════╬═════════════╬═════════════════════╣
║ 5 ║ 3 ║ 3 ║ 4955 ║ 2016-06-12 19:50:41 ║
╚════════╩══════════╩═════════╩═════════════╩═════════════════════╝

type_id 列:

  • 1--> mp3
  • 2--> 专辑
  • 3--> 混音

我需要这样的查询:

select col1, col2, col3
from likes, mp3s, albums, remixes
where likes.user_id == 2

if (likes.type_id == 1)
select col1, col2, col3
from mp3s
where likes.target_id == mp3s.id

union

if (likes.type_id == 2)
select col1, col2, col3
from albums
where likes.target_id == albums.id

union

if (likes.type_id == 3)
select col1, col2, col3
from remixes
where likes.target_id == remixes.id

order by likes.like_date desc
limit 0,20

最佳答案

您需要使用联合和联接

这将选择所有有效的 mp3 行。

select 
col1, col2, col3
from
likes
inner join
mp3s
on likes.target_id = mp3s.id
where likes.type_id = 1 -- type is mp3

现在,我不会为您完成所有工作 - 再创建两个查询来获取混音和专辑 - 然后将它们加入,也许通过联合?

关于mysql - 5 个表中的复杂选择查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37684833/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com