【发布时间】:2011-08-09 10:36:26
【问题描述】:
据我所知,CASE 只能在 WHERE 上下文中使用。不过,我需要根据column 值使用不同的表。我尝试过的看起来像这样:
SELECT
`ft1`.`task`,
COUNT(`ft1`.`id`) `count`
FROM
`feed_tasks` `ft1`
CASE
`ft1`.`type`
WHEN
1
THEN
(INNER JOIN `pages` `p1` ON `p1`.`id` = `ft1`.`reference_id`)
WHEN
2
THEN
(INNER JOIN `urls` `u1` ON `u1`.`id` = `ft1`.`reference_id`)
WHERE
`ft1`.`account_id` IS NOT NULL AND
`a1`.`user_id` = {$db->quote($user['id'])}
既然我知道这是无效的语法,那么最接近的替代方法是什么?
【问题讨论】:
-
你应该合并
pages和urls -
您从哪里读到 CASE 只能在 WHERE 子句中使用?这不是真的。
-
合并就像字面上的“将两个数据库合并为一个”?好吧,在这种情况下,这不是一个选择,因为它们都有完全不同的结构。 @Álvaro G. Vicario:无论哪种方式,这都不是有效的语法。因此,我要求另一种选择。
-
merge two TABLES into one TABLE,完全不同?至少两个表都有user_id和reference_id列,那么完全在哪里? -
好吧,其他 10 列,也许?