gpt4 book ai didi

mysql - 让多列限定符、INNER JOIN 和 UNION 一起工作

转载 作者:行者123 更新时间:2023-11-29 14:42:19 25 4
gpt4 key购买 nike

我正在尝试从三个表中获取 ID 列表。

table_one
---------
| id | other_data |

table_two
---------
| this_id | user_id | time_qual |

table_three
---------
| this_id | second_qual |

我想获取具有以下资格的 table_one id 列表:

  1. id 也可在 table_thirdthis_id 中找到
  2. table_third 中的
  3. second_qual 等于 1
  4. table_two 中的
  5. this_id 等于 table_oneid 并且在同一行中,table_twouser_id 等于 php 变量 $user_id 并且该行中的 time_qual 等于 1。
  6. 但还包括符合 #1 和 #2 条件的 id,如果 table_oneid 和 php,则不包括 #3在 table_two
  7. 同一行上找不到变量 $user_id

这是我的尝试:

        SELECT tb1.id FROM table_one tb1
INNER JOIN table_two tb2
INNER JOIN table_three tb3
WHERE tb2.this_id = tb1.id
AND tb3.this_id = tb1.id
AND tb3.second_qual = 1
AND ((tb2.user_id = $user_id AND tb2.time_qual = 1)
OR ($user_id NOT IN (SELECT user_id FROM table_two)))
GROUP BY tb1.id

我猜那里应该有一个UNION,并且tb2.this_id = tb1.id消除了我想要的#4结果,但我不知道该怎么办。

提前致谢!

最佳答案

尽我所能解析您的需求,我认为这就是答案。如果有遗漏请告诉我,我可以修改:

SELECT t1.id
FROM table_three t3
RIGHT JOIN table_one t1
ON t1.id=t3.this_id
LEFT JOIN table_two t2
ON t1.id=t2.this_id
WHERE (t3.this_id IS NOT NULL AND t3.second_qual=1)
AND ((t2.this_id IS NOT NULL AND t2.user_id=1 AND t2.time_qual=1)
OR t2.this_id IS NULL);

关于mysql - 让多列限定符、INNER JOIN 和 UNION 一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7749324/

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