Sql 如果连接的值在另一组值内,如何返回行?

Sql 如果连接的值在另一组值内,如何返回行?,sql,Sql,这可能是一个愚蠢的问题,但我尝试将两列中的值串联起来,然后返回那些串联的值位于另一个集中的行 我的问题是,最好的方法是什么?我以前使用in语句来实现这一点,但是如果这次我有很多值的话 使用比较值创建一个新表并使用某种关系语句获取结果是否更好?下面是这样的吗 SELECT Users.ID + Users.SubID AS UniqueID, TempVals.ID FROM Users, TempVals WHERE Users.ID + Users.SubID = TempVals.ID 谢

这可能是一个愚蠢的问题,但我尝试将两列中的值串联起来,然后返回那些串联的值位于另一个集中的行

我的问题是,最好的方法是什么?我以前使用in语句来实现这一点,但是如果这次我有很多值的话

使用比较值创建一个新表并使用某种关系语句获取结果是否更好?下面是这样的吗

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

谢谢

如果您使用的是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:+
  • 甲骨文:CONCAT()
  • MySQL:CONCAT()

我使用的是MS Access,它似乎限制了标准SQL。此外,我在WHERE子句中使用字段别名时遇到了问题。有人告诉我这是因为WHERE子句是先求值的。是的,当我在那里写UniqueID时,我考虑过这一点,因为已经有一段时间了。您可以尝试将“…WHERE UniqueID IN…”替换为“…(WHERE U.ID+U.SubID)IN…”