SQL INNER JOIN比较并不是一个精确的比较

时间:2014-06-02 16:00:09

标签: mysql sql

我正在运行一个SQL查询,它将排队列表与引用列表进行比较,以查找有关队列中项目(详细信息)的信息。细节有数字(在下面的例子中它们是40,26和26-1)。我在队列中添加了4个细节26和2个细节40但是当我运行此查询时:

SELECT workingQueue.orderID, workingQueue.toolNum, workingQueue.detailNum, details.detailNum
FROM workingQueue
INNER JOIN details
WHERE workingQueue.toolNum = details.tool
AND workingQueue.detailNum = details.detailNum

它给出了队列中的那些6的列表以及与每个细节26重合的细节26-1的实例。它就像

workingQueue.detailNum = details.detailNum

没有给出精确的比较。如果有帮助,detailNum字段是varchar。对于我做错了什么,有什么想法吗?或者这只是必须以某种方式解决的SQL语言的本质?

输出如下:

enter image description here

编辑:当我这样做时输出相同:

SELECT workingQueue.orderID, workingQueue.toolNum, workingQueue.detailNum, details.detailNum
FROM workingQueue
INNER JOIN details
ON workingQueue.toolNum = details.tool
AND workingQueue.detailNum = details.detailNum

2 个答案:

答案 0 :(得分:0)

INNER JOIN需要ON来指定join子句:

SELECT workingQueue.orderID, workingQueue.toolNum, workingQueue.detailNum,  details.detailNum
FROM workingQueue
     INNER JOIN details
         ON workingQueue.toolNum = details.tool
         AND workingQueue.detailNum = details.detailNum

答案 1 :(得分:0)

在工作队列中,我的数据类型错误(INT而不是VARCHAR)。 IT正在将一个数字与一个字符串进行比较,并通过将字符串26-1转换为数字26来做到最好。愚蠢的错误。谢谢大家!