如何写'或'在SQL中查询

时间:2016-12-26 23:36:16

标签: mysql sql

查找此查询:

SELECT * 
FROM usre u, item i   
WHERE u.user_id = ... AND i.item_id = ....

我想做这样的查询,但我将我的项目分成两个表格!

这意味着我想写(OR) - >喜欢这个查询:

SELECT
    *
FROM
    usre u, drink d OR food f
WHERE
    u.user_id =**
    AND d.drink_id =**
    OR f.food_id =**

这个查询是真的吗?或者我提出两个问题以及如何查询?

3 个答案:

答案 0 :(得分:0)

所以,如果我理解正确,你想要在一张桌子中得到两张桌子(饮料和食物)的数据吗?

如果这是重点,查询应如下所示:

SELECT * FROM user u
INNER JOIN drink d ON u.user_id = d.user_id
INNER JOIN food f ON u.user_id = f.user_id;

d.user_idf.user_id是外键。

如果您仍然有问题描述表格,或者如果您有其他意思,请指明问题。

答案 1 :(得分:0)

那不应该工作。 ' OR'声明要求左侧为布尔值并强制转换为False才能评估右侧的语句。您正在寻找的是' union',您可以使用它将一个表的结果与其他表的结果合并。请注意,从一个表中提取的列类型也必须与其他表列类型匹配。

请参阅http://dev.mysql.com/doc/refman/5.7/en/union.html

不过,我还认为你用错误的方式构建了数据库。为什么在不同的餐桌上有饮料和食物?是的,它们可以有一些独特的特性,但为了简单起见,您可以将所有内容放在一个表中,如:价格,成分,成本等。

答案 2 :(得分:0)

SELECT * 
FROM user u 
INNER JOIN drink d on d.user_id = u.id
INNER JOIN food f on f.user_id = u.id

这里我假设User表有主键ID,Drink和Food表有一个外键'user_id'