两张桌子 -
TRIDS - {srcid, id}
TR - {id, msgid}
我从报告中获取了一个msgid的列表,我运行了一个查询来从TRIDS表中获取src id。两个表中的id字段是连接键。 所以我尝试了类似的东西 -
SELECT
TRIDS.srcid
FROM
TRIDS
JOIN TR
ON TRIDS.id = TR.id
WHERE
TR.msgid = 'value1' OR
TR.msgid= 'value2' OR
....
通常情况下,我会得到40到50个'值'。
但是查询没有按特定顺序返回结果。
我想按照使用的值的顺序得到结果。对于例如
result for value 1
result for value 2
.
.
.
我尝试不使用OR并切换到IN语句
WHERE
TR.msgid IN ('value1', 'value2', ....)
当我使用大约5-6个值进行测试时,结果是有序的。但是当我使用全部(大约40个)时,结果再次没有特别的顺序和整个地方。
我需要将结果整理好,因为他们必须返回另一个报告并对应各自的msgid。
感谢任何帮助。
由于
只是为了清楚
值没有特别的顺序。它就像值1 ='abc213',其对应的srcid ='786typ'。
问题是当我得到值(excel中的VB宏)时,msg id被填充到电子表格中,我必须将结果放回电子表格(另一个宏)。如果结果与值的顺序无关,则电子表格会搞砸。
例如
我发送的值为IN(value1,value2,value3)
我得到的结果是 -
结果 value1
结果 value3
结果 value2
不确定为什么会发生这种情况但会造成混乱
答案 0 :(得分:2)
尝试使用ORDER BY
SELECT TRIDS.srcid FROM TRIDS JOIN TR on TRIDS.id=TR.id WHERE TR.msgid = 'value1' OR TR.msgid ORDER BY TRIDS.srcid asc
此外,您不必使用OR,最好使用IN
SELECT
TRIDS.srcid
FROM
TRIDS
JOIN TR
on TRIDS.id=TR.id
WHERE
TR.msgid in( 'value1','value2','value3'...)
ORDER BY
TRIDS.srcid asc
答案 1 :(得分:0)
您是否考虑过创建一个新表来保存值并使用:
...
WHERE TR.msgid IN (SELECT Value FROM Values ORDER By Value)