SQL:INSERT JOIN WHERE问题

时间:2018-03-24 17:59:30

标签: sql mysqli

数据库的设计是:

会员到Membership_Link(1到很多)。

Membership_Link到Membership_Type(多对1)。

我正在尝试将数据插入到Members中,同时将其链接到Membership_Type中的项目。我希望在1个SQL命令中执行此操作,而不是将其分解为3个查询。

INSERT INTO members
SET members.username = "Test"
    ,members.email = "test@test.com"
    ,members.password = "Password"
LEFT JOIN membership_link ON members.id = membership_link.user_id
RIGHT JOIN membership_type ON membership_link.type_id = membership_type.id
WHERE membership_type.name = "Admin"

仅供参考:我将在PHP中使用它 - MYSQLI语句。

2 个答案:

答案 0 :(得分:1)

使用更新代替插入因为您要更新不插入的表格。

{
  "main": "node_modules/expo/AppEntry.js",
  "private": true,
  "dependencies": {
    "expo": "^25.0.0",
    "react": "16.2.0",
    "react-native": "https://github.com/expo/react-native/archive/sdk-25.0.0.tar.gz",
    "react-native-svg": "^6.3.1",
    "victory-native": "^0.17.2"
  }
}

答案 1 :(得分:1)

在阅读完你的问题后,我希望你需要创建一个成员,所以我不知道为什么你需要member_link和member_type

所以,为此你只需要写

 INSERT into members values (name, email, passowrd);

但是在阅读了您的查询后,您似乎需要更新具有member_type = admin

的成员

所以,为此你必须做两个查询

 SELECT members.id from members LEFT JOIN `membership_link` ON members.id=membership_link.user_id RIGHT JOIN `membership_type` ON membership_link.type_id=membership_type.id WHERE membership_type.name = "Admin"

获得结果后,您将获得ID。因此,请根据members.id

更新您的行
  UPDATE members SET members.username = "Test", members.email = "test@test.com", members.password = "Password" WHERE members.id = {id}

更新了答案

你可以用3个查询做这件事,没有办法做到这一点,因为你必须在两个不同的表中插入数据

因此,您可以先在成员表中插入数据并保留其ID 然后使用selet查询找到membership_type_id,然后您可以在membership_link表中插入值