【问题标题】:Select from a result from outer select statement从外部选择语句的结果中选择
【发布时间】:2013-09-16 09:05:53
【问题描述】:

如果我的场景有捷径,有人可以帮助我吗?

SELECT ProductName FROM Product where ProductId = 1012

这个语句的结果是“DoubleDutch”

SELECT ColumnName FROM ProductMapping

这条语句的结果是“ProductName”

SELECT (SELECT PM.ColumName FROM Product where ProductId = 1012) FROM ProductMapping PM

现在我只是期待结果会是“DoubleDutch” 但结果仍然是“ProductName”

【问题讨论】:

  • 我认为您应该再次检查您的问题。这有点令人困惑。并告诉我们哪些是 TableA 和 TableB 中的列
  • 目前还不清楚你在问什么。请提供示例输入,例如 - TableA 中的数据,TableB 中的数据和示例输出 - 我想要这样的记录集

标签: sql sql-server select subquery


【解决方案1】:

试试这个:

DECLARE @Col VARCHAR(1000), @sql NVARCHAR(max)
SELECT @Col = ValueFromTableB from TableA
SELECT @sql = 'SELECT ' + @Col + ' FROM TableB
EXEC sp_executesql @sql

【讨论】:

  • 这个想法是对的,但我认为应该改变..而不是SELECT @Col = ValueFromTableB from TableA,应该是SELECT @Col = ValueFromTableB from TableB ,而不是SELECT @sql = 'SELECT ' + @Col + ' FROM TableB,应该是SELECT @sql = 'SELECT ' + @Col + ' FROM TableA
【解决方案2】:

我认为这应该适合你

DECLARE @Col VARCHAR(1000), @sql NVARCHAR(max)
Set @Col  = ''
SELECT @Col = @Col + ValueFromTableB + ' , ' from TableB
Set @Col = Left(@Col , (LEN(@Col) - 1))
SELECT @sql = 'SELECT TableAId , ' + @Col + ' FROM TableA'
EXEC sp_executesql @sql

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-30
    • 2013-08-27
    • 2021-08-04
    • 2019-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多