丢失了对 INFORMATION_SCHEMA.COLUMNS Table 和 table 连接的查询
lost doing a query against INFORMATION_SCHEMA.COLUMNS Table with a table join
我正在尝试将 DISTINCT B.INDEX_NAME 与 B.COLUMN_NAME 一起带回来。这就是我使用
分组的原因
然后对于返回的每一行我需要 A.DATA_TYPE
A.DATA_TYPE返回不正确
SELECT A.DATA_TYPE, B.INDEX_NAME, B.COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS as A, INFORMATION_SCHEMA.STATISTICS as B
where B.TABLE_SCHEMA= "mySchema"
and B.TABLE_NAME = "myTable"
and A.TABLE_SCHEMA = B.TABLE_SCHEMA
and A.TABLE_NAME = B.TABLE_NAME
GROUP BY B.COLUMN_NAME
您的问题是由 GROUP BY
子句从返回的多个值中随机选择 DATA_TYPE
引起的,因为您的 JOIN
没有条件。您需要做的是通过向 JOIN
:
添加条件,将每个列名的值数限制为 1
SELECT A.DATA_TYPE, B.INDEX_NAME, B.COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS AS A
JOIN INFORMATION_SCHEMA.STATISTICS AS B
ON A.TABLE_SCHEMA = B.TABLE_SCHEMA AND
A.TABLE_NAME = B.TABLE_NAME AND
A.COLUMN_NAME = B.COLUMN_NAME
WHERE A.TABLE_SCHEMA= "mySchema" AND
A.TABLE_NAME = "myTable"
在 PHP 中(使用 MySQLI):
$sql = 'SELECT A.DATA_TYPE, B.INDEX_NAME, B.COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS AS A
JOIN INFORMATION_SCHEMA.STATISTICS AS B
ON A.TABLE_SCHEMA = B.TABLE_SCHEMA AND
A.TABLE_NAME = B.TABLE_NAME AND
A.COLUMN_NAME = B.COLUMN_NAME
WHERE A.TABLE_SCHEMA= "mySchema" AND
A.TABLE_NAME = "myTable"';
$result = mysqli_query($conn, $sql);
echo mysqli_num_rows($result);
while ($row = mysqli_fetch_assoc($result)) print_r($row);
我正在尝试将 DISTINCT B.INDEX_NAME 与 B.COLUMN_NAME 一起带回来。这就是我使用
分组的原因然后对于返回的每一行我需要 A.DATA_TYPE
A.DATA_TYPE返回不正确
SELECT A.DATA_TYPE, B.INDEX_NAME, B.COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS as A, INFORMATION_SCHEMA.STATISTICS as B
where B.TABLE_SCHEMA= "mySchema"
and B.TABLE_NAME = "myTable"
and A.TABLE_SCHEMA = B.TABLE_SCHEMA
and A.TABLE_NAME = B.TABLE_NAME
GROUP BY B.COLUMN_NAME
您的问题是由 GROUP BY
子句从返回的多个值中随机选择 DATA_TYPE
引起的,因为您的 JOIN
没有条件。您需要做的是通过向 JOIN
:
SELECT A.DATA_TYPE, B.INDEX_NAME, B.COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS AS A
JOIN INFORMATION_SCHEMA.STATISTICS AS B
ON A.TABLE_SCHEMA = B.TABLE_SCHEMA AND
A.TABLE_NAME = B.TABLE_NAME AND
A.COLUMN_NAME = B.COLUMN_NAME
WHERE A.TABLE_SCHEMA= "mySchema" AND
A.TABLE_NAME = "myTable"
在 PHP 中(使用 MySQLI):
$sql = 'SELECT A.DATA_TYPE, B.INDEX_NAME, B.COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS AS A
JOIN INFORMATION_SCHEMA.STATISTICS AS B
ON A.TABLE_SCHEMA = B.TABLE_SCHEMA AND
A.TABLE_NAME = B.TABLE_NAME AND
A.COLUMN_NAME = B.COLUMN_NAME
WHERE A.TABLE_SCHEMA= "mySchema" AND
A.TABLE_NAME = "myTable"';
$result = mysqli_query($conn, $sql);
echo mysqli_num_rows($result);
while ($row = mysqli_fetch_assoc($result)) print_r($row);