2013-10-11 34 views
1

如何将这些结合成一个使用MySQL的语句?如何将MySQL语句与“IF”结合起来?

SELECT COUNT(barcode) AS count 
FROM movieitemdetails_custom 
WHERE username = 'John'; 

if count is == 0 

    SELECT title FROM movieitemdetails WHERE barcode = '12345'; 

else 

    SELECT title FROM movieitemdetails_custom WHERE username = 'John'; 

end-if 
+0

使用左连接和nvl – Max

+2

'NVL()'在MySQL中不存在。 – 2013-10-11 21:44:48

+2

我也有一些暗示有人投票。请先尝试理解问题,然后投票。你不是圣人。请尽量不要成为一个穷人。有人遇到麻烦,他要求贤哲征求意见。 – Max

回答

0
SELECT CASE WHEN countt = 0 THEN (SELECT barcodes FROM movieitemdetails WHERE username = 'John') 
ELSE (SELECT barcodes FROM movieitemdetails_custom WHERE username = 'John') 
0

一种选择是:

SELECT COALESCE(`mdc`.`title`, `md`.`title`, 'NO TITLE') `title` 
FROM (SELECT NULL) der 
    LEFT JOIN `movieitemdetails_custom` `mdc` ON `mdc`.`username` = 'John' 
    LEFT JOIN `movieitemdetails` `md` ON `md`.`barcodes` = '1234567890'; 
1

下面就来获取列表的一种方法:

SELECT title 
FROM movieitemdetails 
WHERE barcode = '12345' 
AND (
    SELECT COUNT(barcodes) 
    FROM movieitemdetails_custom 
    WHERE username = 'John' 
) = 0 
UNION SELECT title 
FROM movieitemdetails_custom 
WHERE username = 'John' 
AND (
    SELECT COUNT(barcodes) 
    FROM movieitemdetails_custom 
    WHERE username = 'John' 
) > 0 

这是一个looong一天结束,所以我希望我得到的数零/非零逻辑直线:)

BTW,I ag与@Max合作,认为downvote是不合适的。我投了这个问题。

+0

任何解决方案? '使用的SELECT语句具有不同数量的列' –

+0

我不敢用简单的SQL。如果他们有不同数量的列,那么你不能用普通的SQL来完成。你也许可以让不匹配的列为空,但是这看起来像一个黑客。 –

+0

那么存储过程会更适合这种类型的查询吗? –