orcale单行子查询返回多行

mmdoudoumm 2014-08-26 01:59:44
update urlnum u set num=(SELECT COUNT(*) FROM js_chat_record WHERE REFER_PAGE LIKE '%'||(select t.url from urlnum t )||'%' AND to_char(CREATE_TIME,'yyyy-mm-dd') BETWEEN '2014-07-01' AND '2014-08-01' and effective >0)

我现在有两个表,一个表里的所有连接匹配另一个表里的连接,查看有多少个。但是无法返回多行。之前用mysql数据库使用的concat函数,但是orcale里不会用。请高手帮忙。
...全文
166 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
mmdoudoumm 2014-08-26
  • 打赏
  • 举报
回复
我现在创建了一个表urlnum,字段url已经插入数据,我需要用url匹配总表里的refer看每一个链接有多少条数据再插入到urlnum的num列。我得语句有错误吗?urlnum 主要是url列,num列。js_chat_record表主要是REFER_PAGE列,CREATE_TIME,effective。
CT_LXL 2014-08-26
  • 打赏
  • 举报
回复
引用 6 楼 mmdoudoumm 的回复:
[quote=引用 4 楼 zlloct 的回复:] [quote=引用 3 楼 mmdoudoumm 的回复:] [quote=引用 1 楼 zlloct 的回复:] [quote=引用 楼主 mmdoudoumm 的回复:] update urlnum u set num=(SELECT COUNT(*) FROM js_chat_record WHERE REFER_PAGE LIKE '%'||(select t.url from urlnum t )||'%' AND to_char(CREATE_TIME,'yyyy-mm-dd') BETWEEN '2014-07-01' AND '2014-08-01' and effective >0) 我现在有两个表,一个表里的所有连接匹配另一个表里的连接,查看有多少个。但是无法返回多行。之前用mysql数据库使用的concat函数,但是orcale里不会用。请高手帮忙。

update urlnum u
   set num =
       (SELECT COUNT(*)
          FROM js_chat_record
         WHERE REFER_PAGE LIKE '%' || u.url || '%'
           AND to_char(CREATE_TIME, 'yyyy-mm-dd') BETWEEN '2014-07-01' AND
               '2014-08-01'
           and effective > 0);
[/quote] 我也试过了可以查但是得不到数值,存不到数据库里。[/quote] 是不是你的子查询查不到数据?条件导致的?[/quote] 我之前数据库里放了一条数据的时候能查到数,而且数对上了。但是多条就报错了。[/quote] 你先用子查询进行查询测试吧,看能不能查出记录。就用你插入的那条数据来测试
mmdoudoumm 2014-08-26
  • 打赏
  • 举报
回复
引用 4 楼 zlloct 的回复:
[quote=引用 3 楼 mmdoudoumm 的回复:] [quote=引用 1 楼 zlloct 的回复:] [quote=引用 楼主 mmdoudoumm 的回复:] update urlnum u set num=(SELECT COUNT(*) FROM js_chat_record WHERE REFER_PAGE LIKE '%'||(select t.url from urlnum t )||'%' AND to_char(CREATE_TIME,'yyyy-mm-dd') BETWEEN '2014-07-01' AND '2014-08-01' and effective >0) 我现在有两个表,一个表里的所有连接匹配另一个表里的连接,查看有多少个。但是无法返回多行。之前用mysql数据库使用的concat函数,但是orcale里不会用。请高手帮忙。

update urlnum u
   set num =
       (SELECT COUNT(*)
          FROM js_chat_record
         WHERE REFER_PAGE LIKE '%' || u.url || '%'
           AND to_char(CREATE_TIME, 'yyyy-mm-dd') BETWEEN '2014-07-01' AND
               '2014-08-01'
           and effective > 0);
[/quote] 我也试过了可以查但是得不到数值,存不到数据库里。[/quote] 是不是你的子查询查不到数据?条件导致的?[/quote] 我之前数据库里放了一条数据的时候能查到数,而且数对上了。但是多条就报错了。
bw555 2014-08-26
  • 打赏
  • 举报
回复
检查数据吧,这语句确实没问题的
CT_LXL 2014-08-26
  • 打赏
  • 举报
回复
引用 3 楼 mmdoudoumm 的回复:
[quote=引用 1 楼 zlloct 的回复:] [quote=引用 楼主 mmdoudoumm 的回复:] update urlnum u set num=(SELECT COUNT(*) FROM js_chat_record WHERE REFER_PAGE LIKE '%'||(select t.url from urlnum t )||'%' AND to_char(CREATE_TIME,'yyyy-mm-dd') BETWEEN '2014-07-01' AND '2014-08-01' and effective >0) 我现在有两个表,一个表里的所有连接匹配另一个表里的连接,查看有多少个。但是无法返回多行。之前用mysql数据库使用的concat函数,但是orcale里不会用。请高手帮忙。

update urlnum u
   set num =
       (SELECT COUNT(*)
          FROM js_chat_record
         WHERE REFER_PAGE LIKE '%' || u.url || '%'
           AND to_char(CREATE_TIME, 'yyyy-mm-dd') BETWEEN '2014-07-01' AND
               '2014-08-01'
           and effective > 0);
[/quote] 我也试过了可以查但是得不到数值,存不到数据库里。[/quote] 是不是你的子查询查不到数据?条件导致的?
mmdoudoumm 2014-08-26
  • 打赏
  • 举报
回复
引用 1 楼 zlloct 的回复:
[quote=引用 楼主 mmdoudoumm 的回复:] update urlnum u set num=(SELECT COUNT(*) FROM js_chat_record WHERE REFER_PAGE LIKE '%'||(select t.url from urlnum t )||'%' AND to_char(CREATE_TIME,'yyyy-mm-dd') BETWEEN '2014-07-01' AND '2014-08-01' and effective >0) 我现在有两个表,一个表里的所有连接匹配另一个表里的连接,查看有多少个。但是无法返回多行。之前用mysql数据库使用的concat函数,但是orcale里不会用。请高手帮忙。

update urlnum u
   set num =
       (SELECT COUNT(*)
          FROM js_chat_record
         WHERE REFER_PAGE LIKE '%' || u.url || '%'
           AND to_char(CREATE_TIME, 'yyyy-mm-dd') BETWEEN '2014-07-01' AND
               '2014-08-01'
           and effective > 0);
[/quote] 我也试过了可以查但是得不到数值,存不到数据库里。
乐哉悠哉 2014-08-26
  • 打赏
  • 举报
回复
可以试一下用EXISTS条件。
UPDATE
  URLNUM
SET
  NUM = (
    SELECT COUNT(*) CNT
    FROM JS_CHAT_RECORD J
    WHERE EXISTS (
      SELECT NULL
      FROM URLNUM T
      WHERE J.REFER_PAGE LIKE '%'||T.URL||'%' 
        AND TO_CHAR(CREATE_TIME,'yyyy-mm-dd') BETWEEN '2014-07-01' AND '2014-08-01' 
        AND EFFECTIVE > 0 
    ) 
);
CT_LXL 2014-08-26
  • 打赏
  • 举报
回复
引用 楼主 mmdoudoumm 的回复:
update urlnum u set num=(SELECT COUNT(*) FROM js_chat_record WHERE REFER_PAGE LIKE '%'||(select t.url from urlnum t )||'%' AND to_char(CREATE_TIME,'yyyy-mm-dd') BETWEEN '2014-07-01' AND '2014-08-01' and effective >0) 我现在有两个表,一个表里的所有连接匹配另一个表里的连接,查看有多少个。但是无法返回多行。之前用mysql数据库使用的concat函数,但是orcale里不会用。请高手帮忙。

update urlnum u
   set num =
       (SELECT COUNT(*)
          FROM js_chat_record
         WHERE REFER_PAGE LIKE '%' || u.url || '%'
           AND to_char(CREATE_TIME, 'yyyy-mm-dd') BETWEEN '2014-07-01' AND
               '2014-08-01'
           and effective > 0);

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧