【问题标题】:SQL substring Issue ( Where substring(...) = (select....) )SQL 子字符串问题( Where substring(...) = (select....) )
【发布时间】:2015-11-18 17:26:28
【问题描述】:

我正在尝试使用此查询仅从完整路径中搜索目录名。

  SELECT 
      `file_name` FROM `tbl_files` where SUBSTR(`file_path`, 
        LOCATE('/',`file_path`)+1, 
          (CHAR_LENGTH(`file_path`) - LOCATE('/',REVERSE(`file_path`)) - LOCATE('/',`file_path`))) =
            (Select `source_path` from `tbl_transcode_folder` where `trancode_folder_id` = 1 )

但它什么也没给我。当我将(Select source_path from tbl_transcode_folder where trancode_folder_id = 1 ) 替换为它的结果mnt/hd/1 时,就像下面的查询一样,这是我想要的响应,但我不想那样做。

 SELECT 
          `file_name` FROM `tbl_files` where SUBSTR(`file_path`, 
            LOCATE('/',`file_path`)+1, 
              (CHAR_LENGTH(`file_path`) - LOCATE('/',REVERSE(`file_path`)) - LOCATE('/',`file_path`))) = `mnt/hd/1`

【问题讨论】:

  • 这两个表的共同字段是什么??? tbl_transcode_folder where trancode_folder_id = 1里只有一行???
  • 它们之间没有公共字段,另一个表存储完整路径而另一个表存储目录名,即使没有公共字段也可以吗? TIA
  • 你怎么可能将文件的完整路径和目录名存储在两个表中,而它们表中没有字段????你怎么知道哪个目录有什么路径???
  • tbl_transcode_foldertbl_files 的用法有很大不同,我只想根据tbl_transcode_folder 中存储的目录名扫描tbl_files 中的所有目录名,该表tbl_files 仅存储完整路径。

标签: mysql sql substring


【解决方案1】:

现在您的子查询从表中返回一个随机行,您需要定义tbl_transcode_folder 表之间的关系,您需要定义外部查询和子查询之间的关系以使它们相关

SELECT `file_name` 
FROM `tbl_files` 
where SUBSTR(`file_path`, LOCATE('/',`file_path`)+1
            ,(CHAR_LENGTH(`file_path`) - LOCATE('/',REVERSE(`file_path`)) 
            - LOCATE('/',`file_path`))) 
           =(Select `source_path` 
             from `tbl_transcode_folder` 
             where `trancode_folder_id` = 1 
             AND `tbl_files`.`CommonColumn` = `tbl_transcode_folder`.`CommonColumn`)

【讨论】:

  • Select file_name from tbl_files where UPPER(file_path) Like (Select source_path from tbl_transcode_folder where trancode_folder_id = 1 ) and media_type = 'video' 他们没有公共字段,但返回我想要的内容,但是当我需要将 LIKE 更改为 SUBSTR 时,什么也不给我。 TIA
猜你喜欢
  • 1970-01-01
  • 2013-04-06
  • 1970-01-01
  • 2014-10-14
  • 1970-01-01
  • 2012-01-26
  • 2011-12-05
  • 2012-02-15
  • 1970-01-01
相关资源
最近更新 更多