我有3个表,即t1,t2,t3。
表:t1
说明:存储上传的文件
id | filename | display_filename | uploaded_path
表:t2
说明:存储已替换的文件
替换文件意味着我添加了替换上传文件的选项。因此t1中的文件将移至t2
id|fileid | filename | display_filename | uploaded_path
表:t3
描述:访问文件的日志详细信息
id|fileid|userid|action|access_time|ip_Address|is_backup(0 /1)
is_backup
列用于了解所访问的文件是否较旧
我添加了一个用于列出日志详细信息的视图,其中包含display_file_name
我的问题是
如果is_backup
值为0
,那么我想从 t1 获取display_filename
,否则 t2
如何编写查询以检索过滤器数据?
SELECT t3.* FROM t3
LEFT JOIN t1
ON t1.id = t3.fileid
LEFT JOIN t2
ON t2.fileid = t3.fileid
WHERE t1.display_filename LIKE '%abc%';
以上查询仅会检查表 t1
我想根据is_backup
值
答案 0 :(得分:2)
尝试以下代码,虽然我没有尝试过,但我认为它会起作用。
SELECT al.* FROM t3
LEFT JOIN t1
ON t1.id = t3.fileid
LEFT JOIN t2
ON t2.fileid = t3.fileid
WHERE IF(t3.is_backup = 0, t1.display_filename ,t2.display_filename ) LIKE '%abc%';
如果这对您有用,请告诉我.. !!!