作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在通过 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/
我是一名优秀的程序员,十分优秀!