Sql 如何将几乎相同的多个查询合并为一个查询?
假设我有一个Sql 如何将几乎相同的多个查询合并为一个查询?,sql,mysql,Sql,Mysql,假设我有一个order\u dummy表,其中存储了order\u dummy\u id、order\u id、user\u id、book\u id、author\u id。你可能会抱怨我桌子的逻辑性,但我还是需要这样做。我想执行以下查询 SELECT * FROM order_dummy WHERE order_id = 1 AND user_id = 1 AND book_id = 1 ORDER BY `order_dummy_id` DESC LIMIT 1 SELECT * F
order\u dummy
表,其中存储了order\u dummy\u id、order\u id、user\u id、book\u id、author\u id
。你可能会抱怨我桌子的逻辑性,但我还是需要这样做。我想执行以下查询
SELECT *
FROM order_dummy
WHERE order_id = 1
AND user_id = 1
AND book_id = 1
ORDER BY `order_dummy_id` DESC
LIMIT 1
SELECT *
FROM order_dummy
WHERE order_id = 1
AND user_id = 1
AND book_id = 2
ORDER BY `order_dummy_id` DESC
LIMIT 1
SELECT *
FROM order_dummy
WHERE order_id = 1
AND user_id = 1
AND book_id = 3
ORDER BY `order_dummy_id` DESC
LIMIT 1
请记住,同一本书的多个编号包含在一个订单中。因此,我通过降序和限制1
列出order\u dummy\u id
,因此只显示书籍的最新顺序。但我的目标是以这种方式在一张桌子上展示其他书籍。我用了groupby
像这样
SELECT *
FROM order_dummy
WHERE order_id = 1
AND user_id = 1
GROUP BY book_id
但它只显示带有递增结果的顺序\u伪\u id
。我再也不知道了。期待您的帮助 您需要更改表之间的关系。
图书id不应在订单行中,因为每个订单可以有多本图书。您需要有一个名为“ordered items”的表,并将您的书籍与订购数量一起存储在该表中—无需多行
要回答您的问题,我可以指向中的SQL运算符:
select * from table where id in (1,2,3)
此外,根据您可以使用的上下文或运算符
select * from table where id = 1 or id = 2 or id =3
您需要更改表之间的关系。
图书id不应在订单行中,因为每个订单可以有多本图书。您需要有一个名为“ordered items”的表,并将您的书籍与订购数量一起存储在该表中—无需多行
要回答您的问题,我可以指向
中的SQL运算符:
select * from table where id in (1,2,3)
此外,根据您可以使用的上下文或运算符
select * from table where id = 1 or id = 2 or id =3
要一次性获得多个选择的结果,请使用:
要一次性获得多个选择的结果,请使用:
谢谢你的建议。如果我想合并以上16个查询,这是否有效?@Devyn:如果您在(订单id、用户id、书籍id、订单虚拟id)上有索引,则此查询将非常有效。但这是一个非常丑陋的问题。在决定使用哪个查询时,性能或可读性/可维护性是最重要的方面吗?我真的没有其他方法:(我已经尽了最大的努力。将来我可能会更改该查询,但我必须向前一步完成我的项目。谢谢你的建议。如果我想合并以上16个查询,这是否有效?@Devyn:如果你在(订单id、用户id、图书id、订单虚拟id)上有索引,该查询将非常有效。)。但这是一个非常丑陋的查询。性能或可读性/可维护性是决定使用哪个查询的最重要方面吗?我真的没有其他方法:(我已经尽了最大的努力。将来我可能会改变这个问题,但我必须完成我的项目。@abatishchev请不要编辑我的英语。Normalize是我在英国生活时使用的英国拼写。Normalize是美国的!@abatishchev请不要编辑我的英语。Normalize是我在英国生活时使用的英国拼写。Normalize是一种语言。)美国佬!