Tôi nghĩ bạn cũng cần phải xác định tên của cơ sở dữ liệu:
SELECT COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_schema = 'SchemaNameHere'
AND table_name = 'TableNameHere'
nếu bạn không chỉ định tên của cơ sở dữ liệu của bạn, rất có thể nó sẽ đếm tất cả các cột miễn là nó khớp với tên bảng của bạn. Ví dụ: bạn có hai cơ sở dữ liệu: DBaseA and DbaseB
, trong DBaseA
, có hai bảng: TabA (3 trường), TabB (4 trường). Và trong DBaseB
, nó lại có hai bảng: TabA (4 trường), TabC (4 trường).
nếu bạn chạy truy vấn này:
SELECT count(*)
FROM information_schema.columns
WHERE table_name = 'TabA'
nó sẽ trở lại 7 vì có hai bảng tên TabA
. Nhưng bằng cách thêm một điều kiện table_schema = 'SchemaNameHere'
:
SELECT COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_schema = 'DBaseA'
AND table_name = 'TabA'
sau đó nó sẽ chỉ trả lại 3.
Nguồn
2012-05-08 03:39:08
@codeMột điểm rất cần thiết. Nếu bạn có nhiều DB với cùng một tên bảng thì điểm của anh ấy là phải. – Ankit