SELECT * <<-- Select * is an anti-pattern
FROM myTbl
WHERE CONCAT_WS("-", 11) = "1" <<-- You are not selecting a column
ORDER BY 11 <<-- This however does refer to a column.
LIMIT 30 OFFSET 0
重寫查詢到
SELECT field1, field2, field3, ...., field11
FROM myTbl
WHERE COALESCE(field1, field2, field3, field11) = '1'
ORDER BY field11
LIMIT 30 OFFSET 0
:如果您想選擇
INSERT INTO table1 (/*do not list the PK!*/ field2, field3, field4)
VALUES ('a', 'test' ,'b' ,'example');
所有重複行使用:
SELECT id, count(*) as duplicate_count
FROM table1
GROUP BY id
HAVING duplicate_count > 1
您需要更新這些ID被列爲重複。
另一種方法是添加一個額外的列並刪除舊的PK。
ALTER TABLE table1 ADD COLUMN new_id unsigned integer not null auto_increment primary key;
ALTER TABLE table1 DROP COLUMN id;
ALTER TABLE table1 CHANGE COLUMN newid id;
你認爲CONCAT_WS(「 - 」,11)的結果是什麼?我總是得到11 ... – glglgl
請發佈'SHOW CREATE TABLE myTbl'的結果和您用於添加自動增量的命令。還要注意'CONCAT_WS(' - ',11)='1''將始終評估爲「FALSE」。你不能像'ORDER BY'那樣在'WHERE'子句中使用字段的序號。 – Quassnoi
所以你不覺得我很蠢,我沒有寫這個SQL--它是在phpMyAdmin生成錯誤後按下瀏覽按鈕時生成的。我認爲下面的海報(Michael Mior)是對的,我現在正在嘗試這個解決方案。 – Ashley