gpt4 book ai didi

MySQL 查询带有 WHERE 子句,但如果没有结果则删除条件?

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

我目前正在通过 PHP 的两个单独的查询来执行此操作,但希望在单个查询中进行优化并以某种方式进行。

第一个查询..

SELECT `referrer` 
FROM `tbl_traffic_log`
WHERE `domain` = 'mysite.com'
AND `referrer` != '$referringDomain'
AND CASE WHEN `clicks_in_unique`=0 THEN 2 ELSE `clicks_out_unique`/`clicks_in_unique` END < 1.4
ORDER BY RAND()
LIMIT 1

..如果 mysql_num_rows 未显示任何结果,我会执行第二个查询以重试,并检查是否有任何结果减去 referrer != 'partner1.com' 部分。

代码基本上是试图找到一个不是发送该点击的合作伙伴的随机贸易伙伴,但如果没有匹配项,作为最后的手段,只要它符合其他条件,就可以发回。

我很确定有一种方法可以做到这一点,但在搜索后找不到方法(可能是因为我对问题的理解不够,无法输入正确的内容)。

也欢迎对该查询的任何其他批评。

谢谢:)

最佳答案

我认为你可以这样做:

SELECT `referrer` 
FROM `tbl_traffic_log`
WHERE `domain` = 'mysite.com'
AND CASE WHEN `clicks_in_unique`=0 THEN 2 ELSE `clicks_out_unique`/`clicks_in_unique` END < 1.4
ORDER BY `referrer` != '$referringDomain' desc, RAND()
LIMIT 1

这个想法是将条件放在order by中。条件(在 MySQL 中)的计算结果为 0 或 1,因此我们首先需要条件为 true 的位置(因此是 desc)。然后它选择一个随机行。如果没有条件为 true 的行,则它会选择随机行。

关于MySQL 查询带有 WHERE 子句,但如果没有结果则删除条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16137558/

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