Mysql sql连接导致双行
我有两张桌子需要连接 我使用此sql查询创建的第一个表Mysql sql连接导致双行,mysql,sql,database,Mysql,Sql,Database,我有两张桌子需要连接 我使用此sql查询创建的第一个表 CREATE TABLE `users` ( `id` bigint PRIMARY KEY AUTO_INCREMENT, `user_login` varchar(60), `user_pass` varchar(255), `first_name` varchar(30), `last_name` varchar(30), `user_status` int(2), `user_phone_number`
CREATE TABLE `users` (
`id` bigint PRIMARY KEY AUTO_INCREMENT,
`user_login` varchar(60),
`user_pass` varchar(255),
`first_name` varchar(30),
`last_name` varchar(30),
`user_status` int(2),
`user_phone_number` varchar(20),
`user_email` varchar(100),
`user_billing_info` text,
`user_temp_units` int(2),
`user_flow_units` int(2),
`user_notes` text
);
SELECT * FROM station_meta JOIN users
第二桌
CREATE TABLE `station_meta` (
`uid` VARCHAR(25) PRIMARY KEY,
`nickname` varchar(30),
`install_date` date,
`latatude` numeric(10,6),
`longitude` numeric(10,6),
`firmware_ver` varchar(10),
`weir_type` int(2),
`weir_width` numeric,
`dist_to_ground` numeric,
`dist_to_weir` numeric,
`service_fee` numeric,
`notes` text
);
当我使用这个sql查询时,我得到了两行
CREATE TABLE `users` (
`id` bigint PRIMARY KEY AUTO_INCREMENT,
`user_login` varchar(60),
`user_pass` varchar(255),
`first_name` varchar(30),
`last_name` varchar(30),
`user_status` int(2),
`user_phone_number` varchar(20),
`user_email` varchar(100),
`user_billing_info` text,
`user_temp_units` int(2),
`user_flow_units` int(2),
`user_notes` text
);
SELECT * FROM station_meta JOIN users
注意:uid类似于9C9Z454Z5CA,以防需要提及
所以在另一个表中没有相同的列
更新
数据样本
我的结果
我在foreach的php函数中使用它,所以得到了双重结果
感谢您的帮助您似乎忽略了这两个表之间的关系。
如果要避免笛卡尔积,只检索两个表之间的匹配值,则应添加一个关系,如下所示:
table user_station_meta (
`id` bigint PRIMARY KEY AUTO_INCREMENT,
user_id bigint
station_meta_uid VARCHAR(25)
)
once you have inserted the matching values
uid, id
9c2748.. 1
BC8CD4.. 5
您可以根据需要选择单个匹配结果
select u.*. s.*
from user_station_meta us
JOIN station_meta s on s.uid = us.uid
JOIN users u on u.id = us.id
更新您的问题添加适当的数据示例、实际结果和预期结果,并解释如何联接这两个表(这两个表中的哪些列用于联接)@scaisEdge ok正确操作now@scaisEdge请检查,我更新了问题,我使用我提到的简单查询加入了他们,表1连接表2我没有使用任何列进行连接,我尝试使用表1作为z将表2作为x在z.id=x.uid中连接,但没有意义,因为uid不同于idLooking到结果。。您没有重复的行(在第一行中,uid和nicname是重复的,但不是昵称)。两个表之间只有一个笛卡尔积(事实上没有用于连接的元素并减少结果)。。所以你应该加上你期望的结果sorry@scaisEdge我真的很困惑,你对此有什么建议或解决方案?是什么原因造成这两排?