where子句中的列'book-category'含糊不清

时间:2013-12-09 04:13:17

标签: mysql sql

我在这个SQL查询中遇到了问题

SELECT * FROM `book` join `journal`  
 WHERE  `book-category` LIKE '$maincat2' 
   AND `book-category` LIKE '$subcat2'  
   AND `book-category` LIKE '$country2' 
   AND `book-category` LIKE '$procat2' 

表格结构是同一本书=期刊

是什么原因?

2 个答案:

答案 0 :(得分:1)

bookjournal都有book-category列,因此MySQL不知道应用条件的是哪一个。您可以通过使用表名完全引用它们来解决此问题。 E.g:

SELECT * FROM `book` join `journal`  
 WHERE  `book`.`book-category` LIKE '$maincat2' 
   AND  `book`.`book-category` LIKE '$subcat2'  
   AND  `book`.`book-category` LIKE '$country2' 
   AND  `book`.`book-category` LIKE '$procat2' 

答案 1 :(得分:1)

也许是我,但你的查询对我来说没有多大意义。

可能你想要这样的东西(使用UNION而不是JOIN),如果你说的话,bookjournal的表模式实际上是相同的/ p>

SELECT 'book' type, b.* 
  FROM book b
 WHERE book-category LIKE '$maincat2' 
   AND book-category LIKE '$subcat2'  
   AND book-category LIKE '$country2' 
   AND book-category LIKE '$procat2' 
UNION ALL
SELECT 'journal', j.* 
  FROM journal j
 WHERE book-category LIKE '$maincat2' 
   AND book-category LIKE '$subcat2'  
   AND book-category LIKE '$country2' 
   AND book-category LIKE '$procat2'