Discuz!官方免费开源建站系统

 找回密码
 立即注册
搜索

[已答复] 麻烦littlehz再进来下,问你个MySQL的问题

[复制链接]
cctext 发表于 2009-8-14 23:21:25 | 显示全部楼层 |阅读模式
本帖最后由 cctext 于 2009-8-14 23:57 编辑

O NO,表 : supe_spacetags中不能同时重复itemid和tagid,郁闷。。
  1. INSERT INTO `supe_spacetags` (`itemid`, `tagid`, `dateline`, `type`) VALUES ('0', '28', '1230', 'mytype') -- Duplicate entry '0-28' for key 1
复制代码
唉。。郁闷。。。


===========================

之前问过:得随机资讯列表的问题
https://discuz.dismall.com/viewth ... page%3D1&page=1

刚又查到说下面这个效率更高
  1. SELECT *
  2. FROM `table` AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT MAX(id) FROM `table`)-(SELECT MIN(id) FROM `table`))+(SELECT MIN(id) FROM `table`)) AS id) AS t2
  3. WHERE t1.id >= t2.id
  4. ORDER BY t1.id LIMIT 1;
复制代码
我想问的是如果我想再加like条件,就是想随机查询列`AA`中包含某个关键词的N条数据,这个Where条件加在哪里?

还有就是当`AA`字段里面的数据是如:12,1230,312,234或者:123,312,12,2304,再或者:123,312,234,12这样的,我想获取 含有'12'的列,但像含有'123'而不含有'12'的列不要,该怎么做?
回复

使用道具 举报

littlehz 发表于 2009-8-14 23:23:44 | 显示全部楼层
肯定不能同时重复啊,supe_sapcetags表就是文章和TAG关系表。表示某篇文章A与某个TAG甲有关系,第二条记录又说 A文章 和 TAG甲 有关系,这没意义啊。
回复

使用道具 举报

 楼主| cctext 发表于 2009-8-14 23:39:17 | 显示全部楼层
...我知道,我现在用其他页面直接入库,怕和系统文章的id冲突,想着用type列来做索引滴。。

不知道手动在spacetags表加上一个列,以后SS升级的时候会不会有影响。。

怕升级的时候把这个列删除了。。那就玩大了。。
回复

使用道具 举报

 楼主| cctext 发表于 2009-8-14 23:46:21 | 显示全部楼层
UP~~~~UP ~~
回复

使用道具 举报

 楼主| cctext 发表于 2009-8-14 23:58:14 | 显示全部楼层
都是无法索引,又怕自加字段会有问题。。。
回复

使用道具 举报

littlehz 发表于 2009-8-15 00:13:12 | 显示全部楼层
数据库中自己增加字段,在升级SS的时候会提示是否删除,但不会自动删除自己建立的字段。
上述的SQL语句都是主键查询,效率很高。但是用LIKE语句无法使用主键,纯英文可以用索引。但无论如何引入LIKE都会降低很多效率。
回复

使用道具 举报

 楼主| cctext 发表于 2009-8-17 08:39:23 | 显示全部楼层
最后发现由于我的特殊要求,按上面的方法随机循环次数太多。。

最后LIKE了之后随机起始位置算了。。。
回复

使用道具 举报

littlehz 发表于 2009-8-17 11:08:35 | 显示全部楼层
如果有必要用到比较复杂的效率比较低的SQL语句,那就block模块的cachetime缓存设置大些来弥补吧。
网上找的随机排序SQL语句只能通过itemid主键查询效率高,还是按自己的思路来写逻辑层面简单的SQL,不一定非要套上用这个联合子查询的SQL。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2025-9-12 21:34 , Processed in 0.124007 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表