結果セットに同じ名前の列が複数ある場合は、mysqlでもすべての列が返されますが、フィールドエイリアスを使用しない限り、結果セットでも同じ名前になります。 ここ を証明するためにsqlfiddleを作成しました 。おそらく、クライアントライブラリは2つの列を区別できません。これは、たとえばlaravelの既知の問題です。
mysqlとmariadbの両方で、フィールド名の前にテーブル名を付けることができますが、テーブル名はフィールド名の一部として返されません。ただし、ほとんどのクライアントライブラリは、mysql / mariadbによって返される結果セットの列のメタデータを取得できます。これには、計算されていない列のテーブル名が含まれます。たとえば、 mysqli_fetch_field_direct() を参照してください。 機能。
メタデータから取得したテーブル名を使用して、どのID列がどのテーブルに属しているかを判別できます。