假设在您的示例中 4 与“tom”一起使用,7 与“jerry”一起使用,并且您拥有 SQL Server 2005 或更高版本。您必须使用 ROW_NUMBER() 函数。
这基本上是你必须做的。根据您的两张桌子的种类,可能会略有偏差。
SELECT
ProductID,
name
INTO #Result
FROM
(
SELECT
Pid,
ROW_NUMBER() OVER (ORDER BY Fake) AS RowID
FROM
(
SELECT
Pid,
1 AS Fake
FROM #ProductID
) InnP
) P
INNER JOIN
(
SELECT
Name,
ROW_NUMBER() OVER (ORDER BY Fake) AS RowID
FROM
(
SELECT
Name,
1 AS Fake
FROM #Name
) InnP
) N ON N.RowID = P.RowID;
编辑:如果您的原始临时表不是 INT 类型,那么最终结果将需要 'CONVERT(INT, Pid) AS Pid'。我假设您还知道如何创建临时表,以防万一您在结果的“FROM”之前不知道,您可以添加“INTO #Whatever”或提前创建临时表和“INSERT INTO #Whatever” '。
编辑 2:显然 ROW_NUMBER() 不允许您按常量排序,因此查询变得更加复杂......