在列名上使用%的LIKE语句但重复行

时间:2014-09-13 12:04:54

标签: mysql sql-like

我的SELECT查询与LIKE语句一起使用但感到震惊;我的行被重复了,我不知道为什么?

SELECT *
FROM questions, counts
WHERE counts.test_coursecode LIKE '%'  || questions.coursecode || '%'

2 个答案:

答案 0 :(得分:0)

我假设您要使用

SELECT *
FROM questions, counts
WHERE counts.test_coursecode LIKE CONCAT('%', questions.coursecode, '%')

代替。

||不是连接运算符,而是MySQL的sql方言中的logical OR

您的查询将匹配每一行,因为任何值都将匹配第一个表达式,它的计算结果为

SELECT *
FROM questions, counts
WHERE counts.test_coursecode LIKE '%'  -- that's true, if test_course_code is not null
    OR questions.coursecode 
    OR '%'

答案 1 :(得分:0)

您必须包含两个表的内连接

SELECT *
FROM questions q inner join  counts c on a q.id and c.fk
WHERE counts.test_coursecode LIKE CONCAT('%', questions.coursecode, '%')

SELECT *
FROM questions q , counts c 
where a q.id and c.fk
and counts.test_coursecode LIKE CONCAT('%', questions.coursecode, '%')