2012-03-24 4 views
0

내 데이터베이스의 모든 테이블에는 이름과 관계없이 항상 0 열의 id (자동 증가)가 있습니다. 항상 존재합니다.인덱스의 mysql where 절

그래서, 테이블에 teste 나는 아마 내가 idCars을 가져야한다 표, 자동차idTeste을 가지고 있지만 형식이 표준 아닙니다, 나는 열이있는 테이블을 예를을 가질 수 단순히 id는입니다.

내가 같은 일반적인 업데이트를 만들려고 해요 : 컬럼의 이름을 중요하지 않기 때문에

update tablename set bla='ble' where column[0]='id'; 

을, 나는 그것의 ID로를 참조하고 싶습니다. 그게 가능하니?

는 내가 뭔가 할 수있는 알고

show columns from table 

을 내 업데이 트를하기 전에 이름을 선택 실행하고, 사실, 나는 내 문제를 해결하기 위해 그렇게했지만이 있다면 궁금 해요 가능한.

답변

1

당신이 무엇을했는지를 서수 위치 또는 단순히 "서수"라고합니다.

SQL은 WHERE 절에서 서수 사용을 지원하지 않습니다. 서수에 대한 지원은 데이터베이스 공급 업체에 따라 다릅니다 - 가장 일반적인 지원은 ORDER BY 절에 있습니다

ORDER BY 2, 1 

을 ... SELECT 절에 나와있는 컬럼 (들)에 의존한다. 일부는 GROUP BY 조항의 서수를 지원합니다.

즉, 서수를 사용하는 것은 SELECT 절의 열 순서에 의존하기 때문에 권장되지 않습니다. ORDER BY/etc가 업데이트되지 않고 순서가 변경되면 런타임까지 알 수 없습니다.

+0

그래, 나는 이것이 불가능하다고 생각합니다. 순서 이름으로 열 이름을 가져 오는 방법을 발견했지만 업데이트 절에서 사용할 수는 없습니다. TABLE_NAME = "mytable"및 ORDINAL_POSITION = 1'과 같이 info_schema.COLUMNS에서 select COLUMN_NAME을 사용했습니다. 그러나 update SQLstat set Script = "buga"와 같은 것입니다 (where TABLE_NAME = "SQLstat"및 ORDINAL_POSITION = 1 인 information_schema.COLUMNS에서 COLUMN_NAME을 선택하십시오.) = 12'는 작동하지 않습니다 ... 나는 현재 솔루션을 유지할 것입니다 ... 고마워요! –