SQL 选择并连接所有行的值

Bur*_*kan 4 mysql sql rows duplicates

想象一下我们有这样的 Tbl_Names 和 Tbl_General_Settings 表

表用户

id   name    surname
1    Ahmet   ABC
2    Ali     XYZ
3    Selim   KLM
Run Code Online (Sandbox Code Playgroud)

Tbl_Global_Settings

id   Setting1    Setting2    Setting3    Setting 4
1    on          off         yes         no
Run Code Online (Sandbox Code Playgroud)

我需要一个 SELECT 查询来显示 tbl_user 中所有行的一行全局设置:

查询结果应该是这样的:

id   name    surname   Setting1    Setting2    Setting3    Setting 4
1    Ahmet   ABC       on          off         yes         no
2    Ali     XYZ       on          off         yes         no
3    Selim   KLM       on          off         yes         no
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?谢谢..

Joe*_*ras 6

在您的示例中,您尝试执行笛卡尔积。

此操作可以在 MySql(和其他 DBMS)中使用 CROSS JOIN 执行,如下所示:

SELECT *
FROM Tbl_User u
CROSS JOIN Tbl_Global_Settings gs
Run Code Online (Sandbox Code Playgroud)

CROSS JOIN(笛卡尔积)获取第一个表的每一行并创建与第二个表的每一行的链接。在您的示例中,结果有 3 行,因为 3(用户)x 1(全局设置)= 3。

如果您有 2 个全局设置,则结果将为 6。(3 x 2)