我有 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/