Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL选择语句_Sql - Fatal编程技术网

SQL选择语句

SQL选择语句,sql,Sql,我需要做一个sql SELECT语句,只有在满足条件的情况下才能连接表(或从连接表中获取值),这可能吗 $sql = "SELECT orders.id_o, orders.user_id,orders.price, users.username FROM orders Left JOIN users ON orders.user_id = users.id ORDER BY order_date ASC"; 我有一个订单表,其中有用户ID,但我也有随机

我需要做一个sql SELECT语句,只有在满足条件的情况下才能连接表(或从连接表中获取值),这可能吗

    $sql = "SELECT orders.id_o, orders.user_id,orders.price, users.username 
    FROM orders Left JOIN users 
    ON orders.user_id = users.id  
    ORDER BY order_date ASC";
我有一个订单表,其中有用户ID,但我也有随机生成的ID,用于作为来宾订购的用户。我想用这个ID加入orders表上的users表,但是当这个ID是随机生成的时候,我只想从order表返回值,因为用户表中没有这个ID的记录

    $sql = "SELECT orders.id_o, orders.user_id,orders.price, users.username 
    FROM orders Left JOIN users 
    ON orders.user_id = users.id  
    ORDER BY order_date ASC";
我只有这个,它将在两个表中都存在user_id的位置写入行

$sql = "SELECT orders.id_o, orders.user_id, orders.price, users.username 
FROM orders JOIN users 
ON orders.user_id = users.id  
ORDER BY order_date ASC";
    $sql = "SELECT orders.id_o, orders.user_id,orders.price, users.username 
    FROM orders Left JOIN users 
    ON orders.user_id = users.id  
    ORDER BY order_date ASC";

这正是左连接的作用。要回答注释中的后续问题,可以使用
coalesce
替换从左连接返回的
null
s:

SELECT    orders.id_o, orders.user_id, orders.price, 
          COALESCE(users.username, 'Guest')
FROM      orders
LEFT JOIN users ON orders.user_id = users.id  
ORDER BY  order_date ASC
    $sql = "SELECT orders.id_o, orders.user_id,orders.price, users.username 
    FROM orders Left JOIN users 
    ON orders.user_id = users.id  
    ORDER BY order_date ASC";

几乎,只需更改为
left join

    $sql = "SELECT orders.id_o, orders.user_id,orders.price, users.username 
    FROM orders Left JOIN users 
    ON orders.user_id = users.id  
    ORDER BY order_date ASC";

下面的语句应该可以做到这一点:

    $sql = "SELECT orders.id_o, orders.user_id,orders.price, users.username 
    FROM orders Left JOIN users 
    ON orders.user_id = users.id  
    ORDER BY order_date ASC";
SELECT
 orders.id_o,
 orders.user_id,
 orders.price,
 users.username 

FROM orders

LEFT JOIN users 
  ON orders.user_id = users.id  

按顺序排序\u日期ASC

左连接,而不是内部连接标题是否能获得一些创造性?可能重复,您可以重复Hammerthanks,它工作得很好。是否可以为未返回任何内容的字段设置默认值?(例如,如果随机生成的ID username字段为空,我想将默认值设置为Guest)@rtom一个优雅的方法是使用
coalesce
。请参阅我编辑的答案。
    $sql = "SELECT orders.id_o, orders.user_id,orders.price, users.username 
    FROM orders Left JOIN users 
    ON orders.user_id = users.id  
    ORDER BY order_date ASC";