[我正在尝试构建一个旅行应用程序,该应用程序可以检查目的地A到B之间的价格,我有一个表,以from
和to
的形式存储数据,类似]]
CREATE TABLE PRICES { from varchar, to varchar price
事实是,如果
from
=A
且to
=B
,如果我尝试搜索价格形式B
->A
,则没有结果。即SELECT * from prices where from = 'B' AND to = 'A'
当然可以通过执行类似SELECT * from prices where from = 'A' And To = 'B' OR from = 'B' and 'To' = 'A'
的查询来解决此问题有没有一种方法可以创建哈希,这样我就不需要执行此
OR
查询,而是在这种情况下,我将只执行SELECT * from prices where hash = 'C'
之类的操作,C
将是一个这样的值hash(a, b) = c = hash(b,a)
,然后我可以将c
存储在表中,而无需执行OR
查询。
如果有帮助,我正在使用Go btw,但您可以使用任何语言/伪代码提出哈希函数。
谢谢
[我正在尝试构建一个旅行应用程序,以检查目的地A到B之间的价格,我有一个表,用于存储数据的往返日期,例如CREATE TABLE PRICES {...
将字符串排序,用定界符连接并返回结果。
func abOrBa(a, b string) string {
if a > b {
a, b = b, a
}
return fmt.Sprintf("%s\t%s", a, b)
}
分别散列每个结果