Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 你能同时选择喜欢和喜欢的地方吗?_Sql_Sql Server 2005_Tsql - Fatal编程技术网

Sql 你能同时选择喜欢和喜欢的地方吗?

Sql 你能同时选择喜欢和喜欢的地方吗?,sql,sql-server-2005,tsql,Sql,Sql Server 2005,Tsql,我需要写一个我想称之为山谷女孩的查询。我需要选择类似于中的内容-类似于以下内容: 从表1中选择* 在中,从表2中选择名称 原因是我有一张满是公司名称的表格,但它们并不完全相同——f.ex。在表1中,它可能会说克莱斯勒集团,而在表2中,它可能只是说克莱斯勒 有什么简单的方法可以做到这一点吗?我认为: SELECT * FROM table1 WHERE EXISTS (SELECT Name FROM Table2 WHERE Table1.Name LIKE Name) 我认为: SELECT

我需要写一个我想称之为山谷女孩的查询。我需要选择类似于中的内容-类似于以下内容:

从表1中选择* 在中,从表2中选择名称

原因是我有一张满是公司名称的表格,但它们并不完全相同——f.ex。在表1中,它可能会说克莱斯勒集团,而在表2中,它可能只是说克莱斯勒

有什么简单的方法可以做到这一点吗?

我认为:

SELECT * FROM table1 WHERE EXISTS (SELECT Name FROM Table2 WHERE Table1.Name LIKE Name)
我认为:

SELECT * FROM table1 WHERE EXISTS (SELECT Name FROM Table2 WHERE Table1.Name LIKE Name)
或不带“%”符号(如果需要):


如果需要,也可以不带“%”号:

这里有一种方法:

SELECT t1.*
FROM Table1 t1
    JOIN Table2 t2 ON t1.Name LIKE t2.Name + '%'

这里有一种方法可以做到:

SELECT t1.*
FROM Table1 t1
    JOIN Table2 t2 ON t1.Name LIKE t2.Name + '%'

如果您试图创建一个密切匹配的列表,那么当可能存在拼写问题时,该函数会很有帮助

SELECT T1.* 
  FROM Table1 T1    
  JOIN Table2 T2 ON SOUNDEX(T1.Name) = SOUNDEX(T2.Name)

如果您试图创建一个密切匹配的列表,那么当可能存在拼写问题时,该函数会很有帮助

SELECT T1.* 
  FROM Table1 T1    
  JOIN Table2 T2 ON SOUNDEX(T1.Name) = SOUNDEX(T2.Name)

您应该查看执行计划以获取您的建议。?如果你要发表这样的评论,你应该解释为什么-我很愿意知道为什么答案是前缀我认为:如果答案是错误的,我很愿意删除答案,或者适当地编辑/注释,但是在这个方向上多一些帮助首先是可取的有点旧,但是我很无聊:您的查询的问题是,在表1中,WHERE EXISTS每行调用一次。由于WHERE EXISTS也使用LIKE运算符,因此性能可能会非常差。考虑到最初的请求,我认为任何查询都会执行缓慢,所以不要把这一点放在心上:您应该查看执行计划以获得您的建议。?如果你要发表这样的评论,你应该解释为什么-我很愿意知道为什么答案是前缀我认为:如果答案是错误的,我很愿意删除答案,或者适当地编辑/注释,但是在这个方向上多一些帮助首先是可取的有点旧,但是我很无聊:您的查询的问题是,在表1中,WHERE EXISTS每行调用一次。由于WHERE EXISTS也使用LIKE运算符,因此性能可能会非常差。考虑到最初的请求,我认为任何查询都会执行得很慢,所以不要把这件事放在心上:这是一个SSSLLLOOWWW查询!但它确实回答了我的问题。不幸的是,结果数据不够好,无法满足我的需要,但这并不是我真正的问题;您应该使用公司表,并在其他表中使用其标识符。使用它会更舒适,而且速度会大大加快。对于我要执行的一次性导出运行,Table2实际上是一个临时表,因此不是最佳实践方法。这是一个SSSLLLOOWWW查询!但它确实回答了我的问题。不幸的是,结果数据不够好,无法满足我的需要,但这并不是我真正的问题;您应该使用公司表,并在其他表中使用其标识符。使用它会更舒服,而且速度会大大加快。表2实际上是我将要执行的一次性导出运行的临时表,因此不是最佳实践方法。