1064
我想根据blogid加入不同的表,当blogid为0时,加入user_dp,否则加入user_blog.But它返回$route['404_override'] = 'error';
错误。
如何解决这个问题?
答案 0 :(得分:0)
您可以使用left join
执行此操作,并按COALESCE
select t.*
FROM user_tq t
left join user_dp ud on t.blogid = 0 and t.uid = ud.uid
left join user_blog ub on t.blogid != 0 and t.uid = ub.uid
where
COALESCE(ud.uid, ub.uid) IS NOT NULL and
***;
有关详细信息,请参阅:MySQL query where JOIN depends on CASE
如果您在条件下尝试inner join to filter
数据,那么
select * from (
select t.*
FROM user_tq t
join user_dp ud on t.blogid = 0 and t.uid = ud.uid
union all
select t.*
FROM user_tq t
join user_blog ub on t.blogid != 0 and t.uid = ub.uid
) as x
where ****;
答案 1 :(得分:0)
使用:强>
select * FROM users t
left join user_role r ON t.user_id = 0 AND r.user_id = t.user_id
left join product_category c ON t.user_id != 0 AND c.user_id = t.user_id
WHERE COALESCE(r.user_id, c.user_id) IS NOT NULL
WHERE ***;
将users,user_role和product_category替换为您的表格。
答案 2 :(得分:0)
此处发布的其他答案是正确的解决方案。 我将回答"为什么我会得到1064"对你而言。
您撰写的语法无效。你不能有条件地"加入这样一个表。
}匹配连接条件"。
互联网上有很多关于// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.3.0'
classpath 'com.google.gms:google-services:1.4.0-beta3'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
与LEFT JOIN
加入的网站,MySQL的网站很好地记录了[INNER] JOIN
功能。
进行游戏和阅读,您将弄清楚其他解决方案的工作原理。
经过反思,我觉得这可以从一些额外的解释中受益。
请参阅此SQLFiddle:http://sqlfiddle.com/#!9/043b7/6