这是创建表的脚本:
CREATE TABLE clients (
client_i INT(11),
PRIMARY KEY (client_id)
);
CREATE TABLE projects (
project_id INT(11) UNSIGNED,
client_id INT(11) UNSIGNED,
PRIMARY KEY (project_id)
);
CREATE TABLE posts (
post_id INT(11) UNSIGNED,
project_id INT(11) UNSIGNED,
PRIMARY KEY (post_id)
);
Run Code Online (Sandbox Code Playgroud)
在我的PHP代码中,删除客户端时,我想删除所有项目帖子:
DELETE
FROM posts
INNER JOIN projects ON projects.project_id = posts.project_id
WHERE projects.client_id = :client_id;
Run Code Online (Sandbox Code Playgroud)
该职位表没有外键client_id,唯一的project_id.我想删除已通过的项目中的帖子client_id.
现在这不起作用,因为没有删除任何帖子.
可能重复:
MySQL ON vs USING?
查询1:
SELECT *
FROM users
JOIN orders ON (orders.user_id = users.user_id)
WHERE users.user_id = 1;
Run Code Online (Sandbox Code Playgroud)
查询2:
SELECT *
FROM users
JOIN orders USING (user_id)
WHERE user_id = 1;
Run Code Online (Sandbox Code Playgroud)
我想加入订单和用户表来获取某些数据.它工作正常.我的问题是,因为两个查询输出相同的结果集,它是否相同?哪一个更有效率?哪一个对性能有好处?哪一个是最佳做法?
我在编写MySQL查询时遇到问题.我在DB中有以下字段
id created_on status
1 2011-02-15 12:47:09 1
2 2011-02-24 12:47:09 1
3 2011-02-29 12:47:09 1
4 2011-03-11 12:47:09 1
5 2011-03-15 12:47:09 1
6 2011-03-22 12:47:09 1
7 2011-04-10 12:47:09 1
8 2011-04-11 12:47:09 1
Run Code Online (Sandbox Code Playgroud)
我需要select the last record of each month.这是为了month FEB record # 3 month MARCH record # 6
和为month APRIL record # 8
请帮我.....
提前致谢.....
这是
... T1 join T2 using(ID) where T2.VALUE=42 ...
Run Code Online (Sandbox Code Playgroud)
同样的
... T1 join T2 on(T1.ID=T2.ID) where T2.VALUE=42 ...
Run Code Online (Sandbox Code Playgroud)
对于所有类型的连接?
我的理解using(ID)是它只是简写on(T1.ID=T2.ID).这是真的?
现在换另一个问题:
以上是一样的
... T1 join T2 on(T1.ID=T2.ID and T2.VALUE=42) ...
Run Code Online (Sandbox Code Playgroud)
我不认为这是真的,但为什么呢?如果在where子句中,on子句中的条件如何与join相互作用?
如果这是一个愚蠢的问题,我很抱歉,但我似乎无法理解它。我对 SQL 相当陌生,这种行为在 R 或 Pandas 或我习惯使用的其他东西中会很奇怪。
基本上,我在两个不同的数据库中有两个表,有一个公共键user_id。我想加入所有列
SELECT * FROM db1.first_table t1
JOIN db2.second_table t2
ON t1.user_id = t2.user_id
Run Code Online (Sandbox Code Playgroud)
太好了,它有效。除了有两个(相同的)列称为user_id. 这并不重要,除了我在 pyspark 中执行此操作时,当我尝试将连接表导出到平面文件时,我收到一个错误,即其中两列具有相同的名称。对此有解决方法,但我只是想知道是否有人可以解释为什么连接返回两 user_id列。它似乎是一个内部连接,因此根据定义,列是相同的。为什么它会同时返回?
作为一个附带问题,是否有一种简单的方法可以避免这种行为?
提前致谢!
我已经LEFT JOIN从我的数据库中获取了2个表中的值.
查询是这样的:
SELECT *
FROM thread
LEFT JOIN comments ON thread.id_thread = comments.id_thread
WHERE id_type = '1'
ORDER BY data DESC, hour DESC
Run Code Online (Sandbox Code Playgroud)
然后我以这种方式输出值:
<?
while($row = mysqli_fetch_array($query))
{
echo '<div class="col-md-1"></div>';
echo '<div class="col-md-11">';
echo $row['title'] ."<br><br>".$row['content']."<br><br>";
echo $row['content_com'];
echo '<div class="col-md-2 pull-right">'. "date: ".$row['data']."<br>"."author: ".'<a href ="/user.php?id='.$row['username'].'">'.$row['username'].'</a>'.'</div>' ."<br><br>";
echo '<form role="form" action="commit.php" method="post"><div class="col-md-offset-1 col-md-9"><input class="form-control" type="text" name="comm"><input type="hidden" name="thread_id" value="'.$row['id_thread'].'"></div></form> <br><br><hr><br>';
echo '</div>';
}
mysqli_close($connect);
?>
Run Code Online (Sandbox Code Playgroud)
然后在commit.php(表单操作)中:
<?php
session_start();
if(isset($_SESSION['id']))
{
$servername = "mysql9.000webhost.com"; …Run Code Online (Sandbox Code Playgroud)