如果连接值在另一组值中,如何返回行?

时间:2013-04-30 15:01:25

标签: sql

这可能是一个愚蠢的问题,但我试图连接两列中的值,然后返回那些连接值在另一组中的行。

我的问题是,这样做的最佳方法是什么?我过去使用IN语句完成了这个,但如果我这次有很多值。

使用我的比较值创建一个新表并使用某种关系语句获取结果会更好吗?像下面那样的东西?

SELECT Users.ID + Users.SubID AS UniqueID, TempVals.ID
FROM Users, TempVals
WHERE Users.ID + Users.SubID = TempVals.ID

谢谢!

1 个答案:

答案 0 :(得分:0)

你所拥有的应该可以正常工作,假设它是MySQL,并且连接的列的数据类型是字符串/字符类型 - 不用担心,你应该能够投射它们。

另一种方式:

SELECT DISTINCT U.ID + U.SubID AS UniqueID
FROM Users as U
WHERE (U.ID + U.SubID) IN (
    SELECT DISTINCT T.ID
    FROM TempVals as T
)

此外,数据库的类型将决定连接方法:

  • SQL Server:+
  • Oracle:CONCAT()
  • MySQL:CONCAT()

Reference: Using IN Statement - SQL