我正在创建一个Web应用程序,其中一个数据库接口需要一个查找表。这是执行SQL的部分:
$A = $_POST['A'];
$B = $_POST['B'];
$tsql= "INSERT INTO INSERT_TABLE (
A,
B_Index)
VALUES
(?, ?)";
$var = array($A, $B);
我的问题是我不想插入B本身的值,而是插入查找表中的值的索引。我试图用表加入VALUES行,但MSSQL似乎不喜欢这样。有什么想法吗?
编辑:查找表的格式为:
index | value
-------------
1 | horse
2 | cow
... | ...
如果$ B =='马',我想插入2而不是'马'。
EDIT2:我尝试了这个查询,但遗憾的是它不起作用,但它显示了我想要做的事情:
INSERT INTO INSERT_TABLE (A, B_Index)
VALUES
SELECT temp.A, LT.index
FROM (A,B) temp
INNER JOIN LOOKUP_TABLE LT
ON LT.value = temp.B
答案 0 :(得分:2)
您可以在INSERT语句中包含SELECT和FROM子句。这允许您将LOOKUP_TABLE中的记录拉入INSERT_TABLE。
示例
INSERT INTO INSERT_TABLE
(
A,
B
)
SELECT
?,
lt.Value
FROM
LOOKUP_TABLE AS lt
WHERE
lt.Index = ?
;
编辑:我真的应该强调以上是伪代码。在实践中,问号应该用值替换。有关详细信息,请参阅下面@Terminus的评论。