gpt4 book ai didi

mysql - 从表中获取所有内容,但如果network_id为9,则只取其中2个

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

第一

SELECT
b.*,
network_9.*,
c.id AS click

FROM
`banners` AS b,
(
SELECT id

FROM `banners` AS b

LEFT JOIN `clicks` AS c
ON b.id = c.banner_id AND c.user_id = 1

WHERE
b.`network_id` = 9 AND
b.`status` = 1 AND
b.`type` IN(1, 2) AND
c.`id` IS NULL

LIMIT 2
) network_9

LEFT JOIN `clicks` AS c
ON b.id = c.banner_id AND c.user_id = 1

WHERE
b.`network_id` NOT IN(network_0) AND
b.`status` = 1 AND
b.`type` IN(1, 2) AND
c.`id` IS NULL

LIMIT 0, 10

第二

SELECT
b.*,
c.id AS click

FROM
`banners` AS b

LEFT JOIN `clicks` AS c
ON b.id = c.banner_id AND c.user_id = 1

WHERE
b.`status` = 1 AND
b.`type` IN(1, 2) AND
c.id IS NULL

LIMIT 0, 10

我正在尝试从横幅中获取所有行,但如果 network_id 为 9,我只想获取其中 2 行,然后仍然获取所有其他行。

第一次尝试是我尝试过的,但失败了。

第二个只是基本的 SQL,它获取所有行,但不检查 network_id

最佳答案

我的第一个也是非常简单的方法是:

  1. 选择横幅中network_id不等于9的所有行选择
  2. 选择横幅中所有network_id等于9的行并将其限制为2

第二个方法是:就像你第一次尝试一样:子选择banner中network_id等于9的行的所有id并限制它们2.Main选择所有行,但只允许network_id不等于9或在子选择内的行

SELECT * FROM banner WHERE id IN (SELECT id FROM banner WHERE network_id = 9 LIMIT 2) OR network_id != 9

关于mysql - 从表中获取所有内容,但如果network_id为9,则只取其中2个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38570340/

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