在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/ 數據庫問答
焚音 回答

JdbcType 和數據庫中的type不是一回事 有一個映射的關系

柚稚 回答

連續(xù)情況,用BETWEEN,比如

SELECT COUNT(sample) FROM table WHERE id BETWEEN <你的起始id> AND <你的結束id> GROUP BY sample

離散情況,用IN,比如

SELECT COUNT(sample) FROM table WHERE id IN (<枚舉出你要搜索的id,逗號隔開>) GROUP BY sample
朕略傻 回答

用下面的語句試試

    select A.*,B.city_nm
        from 
        table_A as A
        left join   
        table_B as B
        on A.id=B.id
墨小白 回答

如果你不在意數據的話直接刪除數據
1 停止MySQL
2 刪除 MySQL的數據 /var/lib/mysql
3 修改該 lower_case_table_names = 1
4 啟動 mysql
4 搞定

若相惜 回答

你這個問題太大了,硬件方面,我就不多說了,比如memcache及redis等NOSQL數據庫,對內存要求都比較高,redis如果使用ssd的硬盤肯定比sas盤好多了。關于你說的網絡延遲和抵用應用程序:我這里拿redis舉例了:
當用戶連接到Redis通過TCP/IP連接或Unix域連接,千兆網絡的典型延遲可能達到200us,而Unix域socket可能低到30us,當然這個跟你的硬件網卡有關系的,而且redis的屬于典型的C/S架構,調用Redis時,通常是以發(fā)送-應答-再發(fā)送-再應答的模式進行的,而每一次發(fā)送與應答,都需要數據從客戶端到服務端飛一次,當需要使用Redis處理多個命令時,這樣時間都消耗到網絡延遲上可能就不劃算了,當然也可以對redis進行優(yōu)化緩解網絡延遲問題,所有的不管是關系型數據庫還是nosql數據庫肯定都與調用該數據庫的程序有關系,比如大批量的查,大批量的寫等這些操作都會對數據庫帶來壓力。畢竟數據庫是這個服務的瓶頸,這個目前好的辦法是在數據庫前加緩存,對數據庫實現讀寫分離,同時拆庫優(yōu)化。這里我只描述redis,其他的nosql數據庫不太了解,不敢亂說。

念初 回答

你的商品設計有問題,
從商品管理的角度來說,就算是同種商品,但是味道、香型等不同,就應該屬于不同的SKU,

墻頭草 回答

你說的這個在MySQL里不是主從,而是雙主(因為一會兒寫A,一會兒寫B(tài)),主從的意思是寫永遠都寫主,再異步同步到從。

實際項目中一般不用雙主(可靠性和可維護性不如主從),主從的應用卻很廣泛,而且一般主從也夠了,因為主從模式已經很好的分擔掉讀操作,大部分應用都是寫少讀多,從我個人的經驗,不建議使用MySQL的多主。

傻叼 回答

set names utf8;
select * from table;

還有問題再調整你客戶端工具的顯示字符集

拽很帥 回答

//大概這樣,只是個大概:
if($supplier !==0 ){ //當供應商不為0時,goods_id使用供應商的goods_id

    $where = 'goods_id=supplier_goods';

}else($dealer !== 0){ //當經銷商不為0時,goods_id使用經銷商的goods_id

    $where = 'goods_id=dealer_goods'; 

}
$data = $mysql->query("select * from table where {$where}");
建議將判斷邏輯放在前面,讓SQL一目了然

痞性 回答

thinkphp中有數據庫字段緩存的,tp3的話在runtime下面的Data下的_fields中,tp的話你用命令清除下字段緩存或者刪除了緩存文件就好了

青裙 回答

一般只要提交帳號密碼。但是為了防破解也要加驗證碼。

六扇門 回答

控制器中使用try catch捕獲異常,catch中$model->getErrors();看一下異常錯誤

影魅 回答

不必要更新所有數據,因為如果更新很多其他無用的數據的話,后期如果數據很多,會有很多的資源浪費,因為你一次操作最多是2條數據狀態(tài)的切換,比如,當前選中的是4,你想切換到25,其實是4的state變成0,25的state變成1.所以,你只需要向后臺傳一個這樣的json:

{
    4:0,
    25:1
}

json_decode 轉換之后的數組格式為這樣

$req = [4=>0,25=>1]

然后foreach處理

foreach($req as $key => $re) {
    $db->where('id', '=', $key)->update(['state' => $re]);
}

因為最多只有兩次循環(huán),所以對性能影響并不是很大。

或者可以這樣,需要將數據用array_keys ,array_values 處理一下。


/**
 * update `表名` set state = case id
 *      when 4 then 0
 *      when 25 then 1
 * end where id in (4,25)
 * @param $table 表名
 * @param $conditions_field 條件字段,此處為 id
 * @param $values_field  需要被更新的字段 ,此處為state
 * @param $conditions 條件 [4,25]
 * @param $values    被更新的值 [0,1]
 * @return int
 */
public function batchUpdate($table,$conditions_field, $values_field, $conditions, $values)
{
    $sql   = 'update ' . $table . ' set '. $values_field .' = case ' .$conditions_field;
    foreach ($conditions as $key => $condition) {
        $sql .= ' when ' . $condition . ' then ?';
    }
    $sql .= ' end where id in (' . implode(',', $conditions) . ')';
    return $db->update($sql, $values);
}
半心人 回答
select A,B,C where A=B;
select A,B,C where A=B and A=C;
涼汐 回答

問題原因是使用事務時,缺少 rollback 或 commit,使用以下代碼可穩(wěn)定復現這個錯誤:

let mysql = require("mysql");

function createConn() {
    return mysql.createConnection({
        host     : '192.168.1.100',
        user     : 'yangqiang',
        password : '123456',
        database : 'node_mysql_demo'
    });
}

function transactionWithoutCommit(conn) {
    conn.beginTransaction(function (err) {
        if (err) {
            throw err;
        }
        conn.query('SELECT * from user where name="jonny"', function (error, results, fields) {
            if (error) {
                return conn.rollback(function () {
                    throw error;
                })
            } else {
                // 缺少 commit,引發(fā)錯誤
            }
        });
    });
}

function transactionWithCommit(conn) {
    conn.beginTransaction(function (err) {
        if (err) {
            throw err;
        }
        conn.query('SELECT * from user where name="jonny"', function (error, results, fields) {
            if (error) {
                return conn.rollback(function () {
                    throw error;
                })
            } else {
                conn.commit(function (err) {
                    if (err) {
                        return conn.rollback(function(){ throw err;})
                    } else {
                        console.log('transaction committed');
                    }
                });
            }
        });
    });
}

function write(conn) {
    conn.query('INSERT INTO user (name) VALUES ("Mei");', function (error, results, fields) {
        if (error) throw error;
        console.log(JSON.stringify(results));
    });
}


var connection = createConn();
connection.connect();

transactionWithoutCommit(connection); // 引發(fā)錯誤
// transactionWithCommit(connection); // 正確的方法
write(connection);
熊出沒 回答

我的理解這算是數據分析的需求了,OLAP的需求依賴一條數據庫查詢直接產出結果不是很容易,如果是SQL可能會考慮存儲過程,MongoDB可選的方法有Map/Reduce和Aggregation,優(yōu)先選擇后者。性能問題在這里先不討論,先看看是否能達到你想要的效果。第二種數據結構應該沒有問題,第一種結構我的解決方案如下:

db.test.aggregate([
    {$project: {brands: "$brands", brands2: "$brands"}},
    {$unwind: "$brands"},
    {$unwind: "$brands2"},
    {$project: {pair: ["$brands", "$brands2"]}},
    {$group: {_id: "$pair", count: {$sum: 1}}}
]);

這種方式先復制一個brands出來,然后做$unwind相當于brands集合自己與自己排列,而你需要的是組合。比如你的示例數據:

{"brands" : [ "西門子", "ABB", "GE" ]}

出來的結果是:

{ "_id" : [ "GE", "GE" ], "count" : 1 }
{ "_id" : [ "GE", "ABB" ], "count" : 1 }
{ "_id" : [ "GE", "西門子" ], "count" : 1 }
{ "_id" : [ "ABB", "ABB" ], "count" : 1 }
{ "_id" : [ "ABB", "西門子" ], "count" : 1 }
{ "_id" : [ "ABB", "GE" ], "count" : 1 }
{ "_id" : [ "西門子", "GE" ], "count" : 1 }
{ "_id" : [ "西門子", "ABB" ], "count" : 1 }
{ "_id" : [ "西門子", "西門子" ], "count" : 1 }

有些額外的數據,比如[ "ABB", "ABB" ],[ "西門子", "ABB" ]/[ "ABB", "西門子" ]。我暫時還沒想到很好的辦法直接在aggregation pipeline中直接過濾掉這些數據,不過應該不影響你使用。如果有想到更徹底的辦法我再回來補充。

補充回答

求助了一下場外觀眾,aggregation確實很強大。你可能需要查一下:&dollar;map, &dollar;reduce, &dollar;let, &dollar;range這些操作符的用法

db.test.aggregate({
    $project: {
        tuples: {
            $reduce: {
                initialValue: [],
                input: {
                    $range: [0, {
                        $subtract: [{
                            $size: "$brands"
                        }, 1]
                    }]
                },
                in: {
                    $let: {
                        vars: {
                            i1: "$$this"
                        },
                        in: {
                            $concatArrays: ["$$value", {
                                $map: {
                                    input: {
                                        $range: [{
                                            $add: [1, "$$i1"]
                                        }, {
                                            $size: "$brands"
                                        }]
                                    },
                                    in: [{
                                        $arrayElemAt: ["$brands", "$$i1"]
                                    }, {
                                        $arrayElemAt: ["$brands", "$$this"]
                                    }]
                                }
                            }]
                        }
                    }
                }
            }
        }
    }
}, {
    $unwind: "$tuples"
}, {
    $sortByCount: {
        $setUnion: "$tuples"
    }
})

這個管道操作本質上的意義就是:

for(var i = 0; i < array.length - 1; i++)
  for(var j = i + 1; j < array.length - 1; j++) {...}

執(zhí)行結果:

{ "_id" : [ "GE", "西門子" ], "count" : 1 }
{ "_id" : [ "ABB", "GE" ], "count" : 1 }
{ "_id" : [ "ABB", "西門子" ], "count" : 1 }
萌面人 回答

t_forum,這個表應該是保存論壇數據,(論壇id,論壇名稱,論壇描述信息);
t_topic,這個表應該是保存話題數據,每一個話題都和一個論壇相關,(話題id,關聯論壇id,話題名稱,發(fā)布該話題用戶id,發(fā)布時間,關注用戶數,回復數...);
t_post,這個應該就是帖子了(帖子id,關聯話題id,發(fā)布用戶id,帖子內容,發(fā)布時間...);
大概應該是這樣的...

雨蝶 回答

為何不在b表增加一個max_created_at字段