【问题标题】:I try to join two table but another table name is in column of first table. Is it possible to join or is there is an我尝试加入两个表,但另一个表名在第一个表的列中。可以加入还是有
【发布时间】:2020-05-23 11:04:09
【问题描述】:

连接两个表...一个表名也是列名。 SQL

FROM table fs
INNER JOIN fs.tablenamecolumn st 
ON fs.t_ID=st.t_ID
where t=1250```

error--
Invalid object name 'fs.tablenamecolumn '.

【问题讨论】:

标签: mysql sql database inner-join jointable


【解决方案1】:

编辑:我刚刚意识到这是针对 MySQL,而不是 MSSQL。所以你需要使用准备语句。希望您可以将以下内容作为指南来帮助您。

您需要动态创建 SQL,例如

DECLARE @tablename AS VARCHAR(100)
SELECT  @tablename = tablnamecolumn FROM [yourtable]

DECLARE @query AS NVARCHAR(MAX)
SET     @query = 
'SELECT * 
 FROM [yourtable] 
 INNER JOIN ' + @tablename + ' 
 ON fs.t_ID=st.t_ID
 WHERE t=1250'

EXEC sp_executesql @query

【讨论】:

    【解决方案2】:

    不是真的。使用动态 SQL 甚至很难做到这一点,因为名称可能会因行而异。

    您应该重新审视您的数据模型。您正在做的事情可能完全没有必要。

    如果有一组有限的表,可以使用left join

    FROM table fs LEFT JOIN
         table1 t1
         ON fs.t_ID = t1.t_ID AND
            fs.tablenamecolumn = 'table1' LEFT JOIN
         table2 t2
         ON fs.t_ID = t2.t_ID AND
            fs.tablenamecolumn = 'table2' LEFT JOIN
         . . .
    WHERE fs.t = 1250
    

    【讨论】:

      【解决方案3】:

      在 where 条件下,在列上给出表别名 别名将在您要过滤的表上。

      select FROM table fs
      INNER JOIN fs.tablenamecolumn st 
      ON fs.t_ID=st.t_ID
      where fs.t=1250
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-11-25
        • 1970-01-01
        • 2018-02-11
        • 2022-01-18
        • 2011-07-17
        • 1970-01-01
        • 1970-01-01
        • 2013-06-25
        相关资源
        最近更新 更多