場(chǎng)景:表中包含有g(shù)roup_id,worker_id,status字段,查詢這三個(gè)字段是否存在重復(fù)的數(shù)據(jù)。
創(chuàng)新互聯(lián)專注于雞冠企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站,成都做商城網(wǎng)站。雞冠網(wǎng)站建設(shè)公司,為雞冠等地區(qū)提供建站服務(wù)。全流程定制開發(fā),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
查找某個(gè)人在某個(gè)班組內(nèi)存在多個(gè)status為0的數(shù)據(jù)
查找某個(gè)人在某個(gè)班組內(nèi)存在多個(gè)status為0的數(shù)據(jù),將最小的id選出來(lái)
查找某個(gè)人在某個(gè)班組內(nèi)存在多個(gè)status為0的數(shù)據(jù),將最小的id選出來(lái),并設(shè)置status為1
將查詢查詢結(jié)果作為where in的條件,需要select的結(jié)果再通過(guò)一個(gè)中間表select多一次,否則會(huì)報(bào)You can't specify target table for update in FROM clause。
MySQL查詢重復(fù)字段,及刪除重復(fù)記錄的方法
數(shù)據(jù)庫(kù)中有個(gè)大表,需要查找其中的名字有重復(fù)的記錄id,以便比較。如果僅僅是查找數(shù)據(jù)庫(kù)中name不重復(fù)的字段,很容易:
SELECT min(`id`),`name` FROM `table` GROUP BY `name`;
但是這樣并不能得到說(shuō)有重復(fù)字段的id值。(只得到了最小的一個(gè)id值)查詢哪些字段是重復(fù)的也容易:
SELECT `name`,count(`name`) as count FROM `table` GROUP BY `name` HAVING count(`name`) 1 ORDER BY count DESC;
但是要一次查詢到重復(fù)字段的id值,就必須使用子查詢了,于是使用下面的語(yǔ)句。
SELECT `id`,`name` FROM `table` WHERE `name` in (
SELECT `name`
FROM `table`
GROUP BY `name` HAVING count(`name`) 1);
但是這條語(yǔ)句在mysql中效率太差,感覺mysql并沒有為子查詢生成零時(shí)表。于是使用先建立零時(shí)表:
create table `tmptable` as (
SELECT `name`
FROM `table`
GROUP BY `name` HAVING count(`name`) 1);
作者:鏡音連改二
鏈接:
來(lái)源:知乎
著作權(quán)歸作者所有,轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán)。
SELECT
apply.org_name?AS?分公司,
n.statusdes?AS?實(shí)時(shí)狀態(tài),
operation_log.apply_id,
operation_log.operator_name?AS?合同復(fù)核操作人,
max(
operation_log.operation_time
)?AS?合同復(fù)核時(shí)間,
contract.contract_number?AS?合同編號(hào),
contract.actual_loan_time?AS?實(shí)際放款時(shí)間,
contract.loan_amount?AS?合同金額FROM
operation_logLEFT?JOIN?contract?ON?contract.apply_id?=?operation_log.apply_idLEFT?JOIN?apply?ON?apply.apply_id?=?operation_log.apply_idLEFT?JOIN?(
SELECT
group_concat(
DISTINCT?c.status_code?SEPARATOR?'||'
)?AS?statussum,
c.is_in_node,
c.apply_id,
group_concat(
DISTINCT?c.status_name?SEPARATOR?'||'
)?AS?statusdes,
group_concat(
DISTINCT?c.operator_name?SEPARATOR?'||'
)?AS?operatornames
FROM
node_record?c
WHERE
c.is_in_node?=?1
AND?c.is_valid?=?1
GROUP?BY
c.apply_id)?n?ON?apply.apply_id?=?n.apply_idWHERE
operation_time?=?"2016-11-1"AND?before_status_name?=?"合同復(fù)核中"AND?end_status_name?=?"合同復(fù)核完成"AND?operation_log.node_code?=?"REVIEW"AND?apply.is_ex_apply?=?'1'AND?apply.borrowing_type?=?'1'AND?operation_log.operator_name?NOT?LIKE?"%測(cè)試%"GROUP?BY
apply.org_name,
n.statusdes,
operation_log.apply_id,
operation_log.operator_name,
DATE(
operation_log.operation_time
),
contract.contract_number,
contract.actual_loan_time,
contract.loan_amount
可以新建立一張表,
把重復(fù)數(shù)據(jù)的字段設(shè)置為索引,
不允許重復(fù),再把之前的表數(shù)據(jù)導(dǎo)入到新建立的表中,
這樣就可以過(guò)濾掉重復(fù)內(nèi)容了。