gpt4 book ai didi

mysql - 使用不同的 id 作为条件来选择具有相同 id 的行?

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

我有下表:

+----+-------------+-----------------+-----------+----------------+
| id | link_id[FK] | category_id[FK] | parent_id[FK] | sort_order |
+----+-------------+-----------------+-----------+----------------+
| 1 2 1 1 1 |
| 2 2 133 1 2 |
| 3 3 2 2 1 |
| 4 3 200 2 2 |
| 5 3 333 200 3 |
| 6 4 1 1 1 |
| 7 5 3 3 1 |
| 8 5 133 3 2 |
| 9 5 223 133 3 |
| 10 5 456 223 4 |
+-----------------------------------------------------------------+

我需要能够SELECT具有相同link_id的所有行,但使用category_id作为条件。这是我正在寻找的示例结果。

+----+-------------+-----------------+-----------+----------------+
| id | link_id[FK] | category_id[FK] | parent_id[FK] | sort_order |
+----+-------------+-----------------+-----------+----------------+
| 1 2 1 1 1 |
| 2 2 133 1 2 |
| 7 5 3 3 1 |
| 8 5 133 3 2 |
| 9 5 223 133 3 |
| 10 5 456 223 4 |
+-----------------------------------------------------------------+

我尝试过此查询,但它仅返回等于 category_id 133 的行。

SELECT *
FROM table a
WHERE (a.object_id,a.category_id) IN (
SELECT b.link_id,b.link_id
FROM table b
WHERE b.category_id = 133
AND a.link_id = b.link_id

) ORDER BY a.sort_order

我还尝试了自连接,这基本上是我所需要的,但后来我得到了单独的列,我需要将它们像上面一样组合起来。

最佳答案

您首先需要从表中获取 link_id,其中 category_id = 133,然后在表中查询具有该 link_id 的所有行>.

SELECT * FROM `table`
WHERE link_id IN (
SELECT link_id FROM `table`
WHERE category_id = 133
)
ORDER BY link_id, sort_order

演示:http://sqlfiddle.com/#!9/67eb4/5

您也应该能够通过“自连接”来做到这一点:

SELECT a.* FROM `table` a
JOIN `table` b ON a.link_id = b.link_id
WHERE b.category_id = 133
ORDER BY a.link_id, a.sort_order

演示:http://sqlfiddle.com/#!9/67eb4/6

关于mysql - 使用不同的 id 作为条件来选择具有相同 id 的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32385526/

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