我的查询中有一个WHERE LIKE
子句,但没有显示正确的结果。
我的查询如下;
SELECT book.isbn, book.title,
copy.code, copy.duration,
student.no, student.name
FROM book
INNER JOIN copy
ON copy.isbn = book.isbn
INNER JOIN loan
ON loan.code = copy.code
INNER JOIN student
ON student.no = loan.no
WHERE copy.code LIKE 1013 OR 3011
我尝试插入%
,但我收到了错误消息。此时,将显示包含整数组合的所有结果。我期待只显示“代码”完全等于1013和3011的结果。
答案 0 :(得分:2)
完全匹配使用IN
WHERE copy.code in (1013, 3011)
或=
WHERE copy.code = 1013 or copy.code = 3011
答案 1 :(得分:1)
请尝试这种方式,注意LIKE
用于字符串值而非数字
SELECT book.isbn, book.title,
copy.code, copy.duration,
student.no, student.name
FROM book
INNER JOIN copy
ON copy.isbn = book.isbn
INNER JOIN loan
ON loan.code = copy.code
INNER JOIN student
ON student.no = loan.no
WHERE copy.code=1013 OR copy.code=3011
答案 2 :(得分:0)
如果copy.code是varchar,您可以使用以下行之一
WHERE copy.code LIKE '1013' OR copy.code LIKE '3011'
WHERE copy.code = '1013' OR copy.code = '3011'
WHERE copy.code in('1013','3011')
如果copy.code是一个数字,你可以使用其中一个
WHERE copy.code = 1013 OR copy.code = 3011
WHERE copy.code in (1013,3011)
答案 3 :(得分:0)
除了LIKE
对于文本而不是数字的评论中的正确观察,重要的是要知道当你在SQL(或任何编程语言)中使用OR
时,你必须指定整个其他条件,而不只是其他值:
WHERE copy.code = 1013 OR copy.code = 3011
所以你两次提到copy.code =
部分,否则计算机不理解你对3011
的意思。