wenyi 发布的文章

对数组或对象进行随机排序


尽管拿去收藏不用谢

   /**
     * 数组、对象随机排序
     * @param data
     */
    randomArray(data){
        let temp = [];
        let len = data.length;
        if(!len){
            let kAll = Object.keys(data);
            len = kAll.length;
            for(let i = len;i>0;i--){
                let num = Math.random();
                num = Math.floor(num*i);
                temp.push(data[kAll[num]]);
                kAll.splice(num,1);
            }
        }else{
            for(let i = len;i>0;i--){
                let num = Math.random();
                num = Math.floor(num*i);
                temp.push(data[num]);
                data.splice(num,1);
            }
        }
        return temp;
    }

更新数据为同一张表查询结果


UPDATE users as u2 SET u2.`password` = 
SELECT u.password as pwd FROM homestead.users as u LEFT JOIN homestead.teachers as t on u.id = t.user_id WHERE t.staff_no = '2003001415' LIMIT 1)
WHERE u2.`loginname` = 'admin' 
LIMIT 1

这样会报错,是mysql本身不支持操作本身又把本身作为数据源(一眼看上去特别有真理,但是看看语句逻辑,在别的数据库是先查出数据,再更新数据,不矛盾呀,也许是mysql查询的时候有点懒,没把查询的结果做一个隔离,而是映射什么的)

解决办法:(包一层就解决了)

UPDATE users as u2 SET u2.`password` = 
    (SELECT pwd from (
        SELECT u.password as pwd FROM homestead.users as u LEFT JOIN homestead.teachers as t on u.id = t.user_id WHERE t.staff_no = '2003001415' LIMIT 1) as uu) 
WHERE u2.`loginname` = 'admin' LIMIT 1