Php 是否使用上一个Select查询的结果从表中选择SQL?

Php 是否使用上一个Select查询的结果从表中选择SQL?,php,tsql,select,Php,Tsql,Select,基本上,我想从一个表中进行选择,然后使用结果从另一个表中进行选择,最后返回我选择的值 DECLARE @var1 int; /*This should become the result of Table1.Column1 */ DECLARE @var2 nchar(50); /*This should become the result of Table1.Column2 */ DECLARE @var3 nchar(50); /*This should become the final r

基本上,我想从一个表中进行选择,然后使用结果从另一个表中进行选择,最后返回我选择的值

DECLARE @var1 int; /*This should become the result of Table1.Column1 */
DECLARE @var2 nchar(50); /*This should become the result of Table1.Column2 */
DECLARE @var3 nchar(50); /*This should become the final result */

SELECT @var1 = (SELECT Column1 FROM Table1 WHERE Column3 = '12345')
SELECT @var2 = (SELECT Column2 FROM Table1 WHERE Column3 = '12345')

SELECT Column1 FROM Table2 WHERE Id = @var1
完成后,PHP将返回var1、var2和var3


我知道这将更容易与2个独立的查询,但我想保持清洁,而不是必须这样做,有人知道我如何可以做到这一点?我知道我提供的代码是完全错误的,但希望我所做的一切都有意义。

这就是join的用途。前两个示例
SELECT
语句可以组合成一个语句,如:

 SELECT column1, column2 FROM table WHERE column3 = '12345';
然后,您可以加入您的
表2

SELECT
    t1.column1,
    t1.column2,
    t2.column1
FROM Table1 T1
    LEFT OUTER JOIN Table2 T2
        ON t1.column2 = t2.id
WHERE t1.Column3 = '12345';
在这里使用左外连接,因为这是最适合上面psuedo代码的连接类型。本质上是“从表1中选择与WHERE条件匹配的所有记录,并根据on条件从表2中选择可能与之匹配的任何记录。如果表2中没有与on条件匹配的记录,则只为该表2列返回NULL”


返回的结果集将有三个字段,它们在功能上等同于您的
@var1
@var2
@var3

,这就是联接的作用。前两个示例
SELECT
语句可以组合成一个语句,如:

 SELECT column1, column2 FROM table WHERE column3 = '12345';
然后,您可以加入您的
表2

SELECT
    t1.column1,
    t1.column2,
    t2.column1
FROM Table1 T1
    LEFT OUTER JOIN Table2 T2
        ON t1.column2 = t2.id
WHERE t1.Column3 = '12345';
在这里使用左外连接,因为这是最适合上面psuedo代码的连接类型。本质上是“从表1中选择与WHERE条件匹配的所有记录,并根据on条件从表2中选择可能与之匹配的任何记录。如果表2中没有与on条件匹配的记录,则只为该表2列返回NULL”


返回的结果集将有三个字段,它们在功能上与您的
@var1
@var2
@var3

相同。您可以通过两种方式来实现这一点。由于第一个查询似乎只返回一个结果,因此可以在第二个查询中使用该子选择作为表达式:

SELECT @var2 = (SELECT Column2 FROM Table1 WHERE Column3 = (SELECT Column1 FROM Table1 WHERE Column3 = '12345'))
或者可以使用公共表表达式(我假设为SQL Server):


这种周长的东西应该有用。我只是在这里输入它作为上下文,但还没有测试语法。

您可以通过两种方式来实现这一点。由于第一个查询似乎只返回一个结果,因此可以在第二个查询中使用该子选择作为表达式:

SELECT @var2 = (SELECT Column2 FROM Table1 WHERE Column3 = (SELECT Column1 FROM Table1 WHERE Column3 = '12345'))
或者可以使用公共表表达式(我假设为SQL Server):

这种周长的东西应该有用。我只是在这里输入它作为上下文,但没有测试语法