纯sql中的PHP代码

标签 php sql t-sql

我有 PHP 代码,我希望它只生成像这样的 sql

表格内容

word   size place
small  10   home
large  18   outside
dog    11   home
cat    6    home
dog    20   outside
small  99   outside

PHP 代码并不绝对正确,但你会看到我需要什么。

$input = array("small", "dog");
$place2 = array();
$sql1 = SELECT word,size,place FROM TAB WHERE word = input[0];
$sql2 = SELECT word,size,place FROM TAB WHERE word = input[1];

if ((($sql1['size'] - $sql2['size']) == 1) && ($sql1['place'] == $sql2['place']) ) {
   $place2[] = $sql2['place'].$sql2['word'].$sql1['word'];
}

并像查询结果一样输出$place2[]

是否可以在不使用 PHP 代码的情况下纯粹使用 sql 来完成此操作?我的意思是,只需进行一些查询(Tquery),该查询将比较两个不同查询的值,并输出接受该 if 语句的位置和单词值数组?我需要它,因为 db 比 php 更快,而且我有很多行

最佳答案

PHP 可能会更快/更高效,但如果你真的想要一个查询来完成它:

SELECT CONCAT(`b`.`place`, `b`.`word`, `a`.`word`) AS `output`
FROM `tab` `a`
JOIN `tab` `b` ON `b`.`word`='dog'
WHERE `a`.`word`='small'
   AND `a`.`size`-`b`.`size` = 1
   AND `a`.`place`=`b`.`place`

正如我所说,PHP 版本可能效率更高。

关于纯sql中的PHP代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9302415/

相关文章:

php - 选择 mySQL 中具有不同 ID 的最新条目

php - 有没有办法将这 3 个查询合二为一

mysql - 在两个表中插入相同的时间戳

sql - 在go中参数化sql查询

mysql - 如何在 node.js 中显示结果 mysql 查询

SQL:如何最好地查询历史表以创建特定日期的快照概述

PHP/MySQL 查询和 mysql_fetch_array() 行的字符串连接

SQL查询: find all devices that have ALL of the Ids passed in

SQL Server 根据定义的起始值开始每行计数?

php - 简单的MySQL查询问题