MySQL 4表完全连接并仅显示一次共享列

MySQL 4表完全连接并仅显示一次共享列,mysql,join,Mysql,Join,我有4个表,我想完全连接,但问题是,我希望UID只在所有表中显示一次,我尝试了使用(UID)语法,但没有用,有人能告诉我正确的语法吗 SELECT * FROM user_table, user_setting, user_score, scores WHERE user_table.uid = 'x' AND max_score >= user_score AND min_score <= user_score AND user_table.uid = user_setting.u

我有4个表,我想完全连接,但问题是,我希望UID只在所有表中显示一次,我尝试了使用(UID)语法,但没有用,有人能告诉我正确的语法吗

SELECT * FROM user_table, user_setting, user_score, scores
WHERE user_table.uid = 'x' AND max_score >= user_score AND min_score <= user_score
AND user_table.uid = user_setting.uid AND user_score.uid = user_table.uid;
从用户表、用户设置、用户分数、分数中选择*

其中user_table.uid='x'和max_score>=user_score和min_score您所描述的是一个内部联接,不是完全联接,但除了术语之外,您需要指定要在
SELECT
子句中检索的特定列

比如说,

SELECT user_table.uid, user_setting.col1, user_score.col2 FROM user_table, user_setting, user_score, scores
WHERE user_table.uid = 'x' AND max_score >= user_score AND min_score <= user_score
AND user_table.uid = user_setting.uid AND user_score.uid = user_table.uid;

您所描述的是内部联接,不是完全联接,而是术语,您需要在
SELECT
子句中指定要检索的特定列

比如说,

SELECT user_table.uid, user_setting.col1, user_score.col2 FROM user_table, user_setting, user_score, scores
WHERE user_table.uid = 'x' AND max_score >= user_score AND min_score <= user_score
AND user_table.uid = user_setting.uid AND user_score.uid = user_table.uid;

据我所知,没有办法选择表中所有的列(由“*”指定),然后取消一些字段?谢谢你提供了更现代的语法,我边走边学。@Itai:不,因为那样做会自相矛盾<代码>*
明确表示“所有列”;如果有要查看(或在本例中不希望看到)的列周围的约束,则必须显式指定它们。作为旁注,在应用程序代码中使用
select*
通常被认为是一种不好的做法。那么使用(id)左连接tbl_名称有什么用呢?我可以用它来统一列吗?使用(colname)不是MySQL特有的,即使“select*”也只会在输出中产生一个“colname”实例所以据我所知,无法选择表中由“*”指定的所有列,然后取消某些字段?谢谢你提供了更现代的语法,我边走边学。@Itai:不,因为那样做会自相矛盾<代码>*明确表示“所有列”;如果有要查看(或在本例中不希望看到)的列周围的约束,则必须显式指定它们。作为旁注,在应用程序代码中使用
select*
通常被认为是一种不好的做法。那么使用(id)左连接tbl_名称有什么用呢?我可以用它来统一列吗?使用(colname)不是MySQL特有的,即使使用了“select*”也只会在输出中产生一个“colname”实例。