ThinkPhp查询同表字段相同数据

2025-11-18 152 0

ThinkPHP 条件是一个表里面的两个字段比较

今天群里有人问,thinkphp框架,条件是一个表里的两个字段,怎么查询。
然后就做了下测试:

比如查询出 手机号就是微信号 的用户:

(1)首先,正常的sql语句应该是这样的:

SELECT `id`,`name`,`tel`,`weixin` FROM `user` WHERE `tel` = `weixin`

然后在thinkphp框架中测试:

(2)当where条件是字符串时,肯定是可以的:

M(‘user‘)->where('`tel`=`weixin`')->field('id,name,tel,weixin')->select();

字段不加反引号【`】也是可以的:

M(‘user‘)->where(‘tel=weixin‘)->field(‘id,name,tel,weixin‘)->select();

在thinkphp程序中,如果在数组中要查询同一张表里面两个字段值相同的数据,例如查询sku_no和sku_pre_no值相同的数据,可以采用下边的语句进行查询

use think\Db; // 确保引入Db类

if (!empty($sku_type)) {
    if ($sku_type == 888) {
        // 当sku_type=888时,查询sku_no等于sku_pre_no的数据
        $condition[] = ['sku_no', '=', Db::raw('sku_pre_no')];
    } else {
        // 其他情况,查询sku_no不等于sku_pre_no的数据
        $condition[] = ['sku_no', '!=', Db::raw('sku_pre_no')];
    }
}

经过测试,可以正常查询

相关文章

一个PHP文件搞定微信支付系列之公众号支付
PHP中的日期遍历
PHP使用企业微信接口推送消息
MySQL 中删除重复的数据并只保留一条
Thinkphp 常用伪静态
PHP手机号中间四位用星号*代替实现详解

发布评论