[英]How to use result of query to select in to another table in Sql Server
嗨,我是新来的。 我在选择查询结果到另一个数据库时遇到问题。
<?php
include_once("config.php");
$connectionInfo = array( "Database"=>"rohanstat", "UID"=>$UID, "PWD"=>$PASS);
$conn = sqlsrv_connect( $serverName, $connectionInfo);
$conn = sqlsrv_connect( $serverName, $connectionInfo);
$sql2 = "SET ROWCOUNT 15 SELECT attacker, COUNT(attacker) AS dupe_cnt FROM [rohanstat].[dbo].[TPKill]
GROUP BY attacker
HAVING COUNT(attacker) > 0
ORDER BY COUNT(attacker) DESC";
$stmt2 = sqlsrv_query( $conn, $sql2);
while($rows = sqlsrv_fetch_array($stmt2))
echo $rows ['attacker']."<br>";
?>
我只想使用$rows['attacker']
选择另一个数据库。 这意味着我想这样使用它。
sql = "select * from [RohanGame].[dbo].[TCharacter] where name = $rows ['attacker'];
提前致谢。
您可以简单地使用IN
:
SELECT *
FROM [RohanGame].[dbo].[TCharacter]
WHERE name IN
( SELECT TOP 15 attacker
FROM [rohanstat].[dbo].[TPKill]
GROUP BY attacker
HAVING COUNT(attacker) > 0
ORDER BY COUNT(attacker) DESC
);
或者,如果您需要COUNT,则可以将结果结合在一起:
SELECT tc.*, a.Dupe_cnt
FROM [RohanGame].[dbo].[TCharacter] tc
INNER JOIN
( SELECT TOP 15 attacker, COUNT(attacker) AS dupe_cnt
FROM [rohanstat].[dbo].[TPKill]
GROUP BY attacker
HAVING COUNT(attacker) > 0
ORDER BY COUNT(attacker) DESC
) a
ON a.Attacker = tc.name;
我认为这不会有太大变化,但是您可以换掉:
HAVING COUNT(attacker) > 0
与
WHERE attacker IS NOT NULL
由于您已经按攻击者分组,因此COUNT(attacker)
不为空的唯一组就是COUNT(attacker)
为空的组:
SELECT tc.*, a.Dupe_cnt
FROM [RohanGame].[dbo].[TCharacter] tc
INNER JOIN
( SELECT TOP 15 attacker, COUNT(*) AS dupe_cnt
FROM [rohanstat].[dbo].[TPKill]
WHERE attacker IS NOT NULL
GROUP BY attacker
ORDER BY COUNT(*) DESC
) a
ON a.Attacker = tc.name;
您对该问题的标记是SQL; SQL服务器
但对于mySQL Oracle和其他数据库是相同的
在这里我回答T-SQL中的其他问题
您可以通过两种方式在PHP中从DB1读取内存,然后打开连接并向DB2做逻辑
或在T-SQL中可以在一个查询中完成
如果您还想要使用PHP的解决方案,即已声明的$rows
变量,则可以执行以下操作:
$attackers = "";
foreach($rows as $row) {
$attackers .= "$row,";
}
//Get rid of the last comma
$attackers = rtrim($attackers, ',');
$sql = sprintf("select * from [RohanGame].[dbo].[TCharacter] where name IN (%s)", $attackers);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.